您好,我遇到了 Java 循环问题。
所以我想弄清楚如何通过输入三角形的高度来确定弗洛伊德三角形循环中的第一个数字(在模式的顶部)。
注意:只输入高度来确定第一个数字,最后一个数字固定为1。
例如:
Enter the height: 5
The first number is: 15
15
14 13
12 11 10
9 8 7 6
5 4 3 2 1
还有一个是
Enter the height: 6
The first number is: 21
21
20 19
18 17 16
15 14 13 12
11 10 9 8 7
6 5 4 3 2 1
我已经弄清楚如何执行模式和值的递减,但我似乎无法弄清楚第一个数字。我一直在尝试找出顺序,但它仍然让我感到困惑,因为我在 Java 方面还是新手。
这是我的代码:
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
int n;
int startingnumber = ;
Scanner input = new Scanner(System.in);
System.out.print("Enter the height of the triangle: ");
n = input.nextInt();
System.out.print("The first number is "+startingnumber);
for(int i =1; i<=n; i++){
for(int j =1; j<=i; j++){
System.out.print(startingnumber);
startingnumber--;
}
System.out.println();
}
}
}
代码还没有完成,因为我想不出公式:(
如果我能找到任何帮助,我将不胜感激。谢谢!
最佳答案
这道数学题是Triangular number这是一个visual demonstration
S1 = 1
S2 = 1 + 2
S3 = 1 + 2 + 3
...
Sn = 1 + 2 + 3 + ... + n
=> 1 + 2 + 3 + ... + n = n * (n + 1) / 2
也可以看看 System.out.printf
public static void main(String[] args) {
int n;
int startingnumber;
Scanner input = new Scanner(System.in);
System.out.print("Enter the height of the triangle: ");
n = input.nextInt();
startingnumber = n * (n + 1) / 2;
System.out.println("The first number is " + startingnumber);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
System.out.printf("%3d ", startingnumber);
startingnumber--;
}
System.out.println();
}
}
输出
Enter the height of the triangle: 6
The first number is 21
21
20 19
18 17 16
15 14 13 12
11 10 9 8 7
6 5 4 3 2 1
关于java - 我如何确定用于确定 Floyd 三角形的 Java 循环数组中第一个数字的公式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58952072/