Pascal的三角Java实现
问题描述:
我想通过给方法提供行号和列号来找出Pascal三角形的正确数字。Pascal的三角Java实现
我发现这段代码:
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
我想不出错递归的一部分,任何人可以帮助我吗?
谢谢!
答
这不是关于递归部分或关于getPascalValue()
方法本身(本身):它是关于基于0的索引和基于1的索引之间的差异。该代码被写成假定基于0的索引,即三角形的顶部在(0,0)
;但你似乎预计1基指数在这种情况下顶部将在(1,1)
。
在main()
调用来自外部,即getPascalValue()
方法时,简单地纠正这个做:
int row = 3, column = 2;
System.out.println("\r\n"+getPascalValue(row - 1, column - 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);
}
的演算错了,因为我想在不操纵方法的情况下给出答案。 诀窍在于专栏。现在工作。
也许你只是困惑于它是基于零还是基于一个? –
只需将'if'更改为'column == 1',以使输入1为基础。 – 4castle
正如我确信您知道的那样,我们是一个问答网站,而不是编码人员出租服务。请解释你到目前为止尝试过的以及为什么它没有奏效。请参阅:[为什么“有人可以帮助我?”不是一个实际的问题?](http://meta.*.com/q/284236)和[当我不确定我在找什么时问一个好问题?](https:// meta。 *.com/questions/262527/how-to-ask-a-good-question-when-im-not-sure-what-im-looking-for) –