帕斯卡三角形,计算给定行和列的数字 Java

Pascal's triangle, calculating number at given row and column Java

我有一个小任务,我必须生成一个帕斯卡三角形,然后根据用户输入的行和列找到一个数字。这就是我想出的全部,我不知道如何继续计算给定行和列的数字。

import java.util.Scanner;

public class PascalTriangle {

   public static void print(int n) {
       for (int i = 0; i < n; i++) {
           for (int j = 0; j <= i; j++) {
               System.out.print(pascal(i, j) + " ");
           }
           System.out.println();
       }
   }

   public static int pascal(int i, int j) {
       if (j == 0) {
           return 1;
       } else if (j == i) {
           return 1;
       } else {
           return pascal(i - 1, j - 1) + pascal(i - 1, j);
       }

   }

   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.print("Enter the row number");
       int row = scanner.nextInt();
       print(row);
   }
}

首先,你的代码会很慢。我不会做你的作业,但你可以通过知道前一行来计算帕斯卡三角形的下一行,在每个单元格的恒定时间内,而你目前正在使用 huge 时间重新计算相同的值。

其次,对于你的实际问题,你可以查看formula of a cell in the Pascal Triangle。这不是正确的方法,但仍然可以作为在 Pascal 三角形上记录自己的起点。

使用此公式,您可以通过计算 only its row.

来计算给定位置的数字

编辑

您最近的评论似乎指向了一个不会计算某个位置的值,而是计算一个值的位置的意愿。事先,这样的位置绝对没有唯一性:几乎所有的值在三角形中至少出现两次,因为它是对称的。

但是如果你想 return 例如这些位置的字典序中的第一个,您可以逐行计算(使用与显示三角形相同的方案),然后在获得所需值后立即停止。