我想通过给方法提供行号和列号来找出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
我无法找出错误的递归部分,任何人都可以帮助我吗?
谢谢!
答案 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);
}
微积分是错误的,因为我想在没有操纵方法的情况下给出答案。
专栏是案例。现在有效。