Pascal的三角形,计算给定行和列Java的数字

时间:2015-04-24 23:09:57

标签: java pascals-triangle

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

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);
   }
}

1 个答案:

答案 0 :(得分:0)

首先,你的代码会很慢。我不打算完成你的任务,但是你可以通过只知道前一个三角形来计算Pascal三角形的下一行,在每个单元格的恒定时间内,当你正在使用巨大的时候时间重新计算相同的值。

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

使用此公式,您可以通过计算only its row来计算给定位置的数字。

修改

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

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