java - 我如何确定用于确定 Floyd 三角形的 Java 循环数组中第一个数字的公式?

标签 java loops for-loop while-loop

您好,我遇到了 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/

相关文章:

javascript - 我的 while 循环接受它不应该接受的答案。为什么?

python - 如何在python中的单个for循环中使用2个索引变量

java - 数组循环性能中哪一个更快?

java - 在 Vaadin 23 + Spring Security + Azure AD 中访问 Microsoft Graph API

java - 通过套接字发送多个字节数组

java - 逆向Java完整文档

java - Netbeans 否认图书馆的存在,即使它在那里

javascript - 达到25个唯一div的末尾后,再加载5个div。 5行,每行5格

javascript - 如何为循环创建数组

php - 检查脚本完成时间