Pascal的Triangle Java实现

时间:2017-03-09 21:41:32

标签: java logic

我想通过给方法提供行号和列号来找出Pascal三角形的正确数字。

我发现了这段代码:

public static int getPascalValue(int row, int column) {
    if ( column == 0 || column == row) {
        return 1;
    } 
    return getPascalValue(row - 1, column - 1) + getPascalValue(row - 1, column);
}

public static void main(String args[]) { 
    System.out.println("\r\n"+getPascalValue(3,2)); 
}

这对我来说似乎是正确的,但错误的数字。

例如,主要应该是第2号结果,但它给了我3:

    1 
   1 1 
  1 2 1 
 1 3 3 1 

我无法找出错误的递归部分,任何人都可以帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

这不是关于递归部分或关于getPascalValue()方法本身(本身):它是关于基于0的索引和基于1的索引之间的差异。编写代码以假设基于0的索引,即三角形的顶部为(0,0);但你似乎期望从1开始的指数,在这种情况下,顶部将是(1,1)

在从外部调用getPascalValue()方法时,即在main()执行此操作时,请务必纠正此问题:

int row = 3, column = 2;
System.out.println("\r\n"+getPascalValue(row - 1, column - 1)); 

答案 1 :(得分:1)

我自己回答:

public static int getPascalValue(int row, int column) {
    if(column == 0 )
        return 0;
    if (  column == row) {
        System.out.println("result di row: " + row +" column: "+ column + " = 1" );
        return 1;
    } 
    int result = getPascalValue(row - 1, column - 1) + getPascalValue(row - 1, column);
    System.out.println("result di row: " + row +" column: "+ column + " = "+ result);
    return result;//getPascalValue(row - 1, column - 1) + getPascalValue(row - 1, column);
}
微积分是错误的,因为我想在没有操纵方法的情况下给出答案。 专栏是案例。现在有效。