Java 爪哇的Hosoya三角形
目标:分别创建Hosoya三角形的递归表示 你的任务:著名数学家Haru Hosoya描述了一个三角形(见下图),它是基于斐波那契数的三角形数字排列。从用户处获取高度,并使用数组存储每行上的值。使用递归方法打印出Hosoya三角形的适当层数。不要认为输入是好的。您还应该实现try…catch块来捕获错误的输入 以下是我目前掌握的代码:Java 爪哇的Hosoya三角形,java,Java,目标:分别创建Hosoya三角形的递归表示 你的任务:著名数学家Haru Hosoya描述了一个三角形(见下图),它是基于斐波那契数的三角形数字排列。从用户处获取高度,并使用数组存储每行上的值。使用递归方法打印出Hosoya三角形的适当层数。不要认为输入是好的。您还应该实现try…catch块来捕获错误的输入 以下是我目前掌握的代码: public class HosoyaTri { public static void main(String[] args) { Sc
public class HosoyaTri {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
boolean continueLoop = true;
int num = s.nextInt();
do {
try {
System.out.println("How many levels?");
System.out.println(num + " levels");
continueLoop = false;
} catch (InputMismatchException im) {
System.err.println("I said INTEGER, try again");
s.nextLine();
} catch (Exception e) {
System.err.println("What did you do?");
}
} while (continueLoop);
int triangle[][] = new int[num][num];
for (int i = 0; i < num; i++) {
for (int j = 0; j < num; j++) {
triangle[i][j] = 0;
}
}
for (int i = 0; i < num; i++) {
triangle[i][0] = 1;
}
for (int i = 1; i < num; i++) {
for (int j = 1; j < num; j++) {
triangle[i][j] = triangle[i - 1][j - 1] * triangle[i - 1][j];
}
}
for (int i = 0; i < num; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(triangle[i][j] + " ");
}
System.out.println();
}
}
}
公立医院{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
布尔连续运算=真;
int num=s.nextInt();
做{
试一试{
System.out.println(“多少层?”);
System.out.println(num+“levels”);
continueLoop=false;
}捕获(输入不匹配异常im){
System.err.println(“我说的是整数,再试一次”);
s、 nextLine();
}捕获(例外e){
System.err.println(“你做了什么?”);
}
}while(continueLoop);
整数三角形[][]=新整数[num][num];
for(int i=0;i 对于(int j=0;j一个问题是,您在输入循环之前读取了一次级别数。然后提示输入一个级别,然后打印num
,而不给用户任何提供输入的机会!您应该解决这个问题。您还应该针对num 1)进行测试)
我建议您在类中使用这些定义之一编写一个(递归)静态方法,用于计算三角形中一个条目的正确值(给定n
和j
作为参数)。然后,您可以消除三角形
变量以及初始化该变量的所有代码。只需运行输出循环并替换对递归方法的调用,在该方法中,您现在可以访问三角形
的特定元素。(如果出于某种原因需要显式构建三角形,只需通过调用递归方法初始化每个元素。顺便说一句:不需要将triangle
的元素初始化为0;Java会在分配矩阵时自动执行此操作。)您遇到了什么具体问题?您的程序崩溃了吗?输出不正确吗?还有其他问题吗?我可以从用户那里读取级别的数量,但实际上无法创建hosoya三角形。如果我尝试运行此程序,不会发生任何事,但不会出现错误,比如作业……我的计算机上发生了一些事情-它会打印一个三角形角度,虽然值显然不正确。注意:使用递归方法打印出Hosoya三角形的适当层数-还没有递归。我正在试图找出实际递归适合的位置。inI将对其进行处理并返回给您,谢谢您的帮助