public class A4work
{
private static int fibonacci(int n) {
if (n <= 1) {
return n;
}
{
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
private static boolean isAfibonacci(int a) {
int x = 0; //sequence number
int c = 0; //number in fib sequence
while (a <= c) {
c = fibonacci(x);
x++;
}
if (a == c) {
return true;
} else {
return false;
}
}
public static void main(String[] args) //called a method signiture
{
System.out.println("The 5th Square pyramidal number is " + isAfibonacci(3));
}
}
我认为我的代码是正确的,但它会继续返回false。我用它来决定一个数字是否在fib序列中。 谢谢你的帮助
答案 0 :(得分:0)
例如,如果您的输入a
为5,则您将拥有:
int c = 0; //number in fib sequence
while (a <= c) { ... }
while
循环永远不会运行,因为5 <= 0
为false。因此,对于任何大于零的a == c
,a
始终为false。
我认为你想在c
大于或等于a
时停止迭代,所以正确的条件是
while (c < a) { ... }
答案 1 :(得分:0)
当您使用System.out.println("The 5th Square pyramidal number is "+ isAfibonacci(3) );
时,a
方法中的isAfibonacci();
变为3.现在请查看您的代码。
while(3 <= 0) //replaced a with 3 here and c with 0 for visualization
{
...
}
非负的非零整数永远不会小于或等于0,因此总是会导致错误。