布尔语句

时间:2015-03-11 22:10:24

标签: java boolean fibonacci

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序列中。       谢谢你的帮助

2 个答案:

答案 0 :(得分:0)

例如,如果您的输入a为5,则您将拥有:

int c = 0;  //number in fib sequence
while (a <= c) { ... }

while循环永远不会运行,因为5 <= 0为false。因此,对于任何大于零的a == ca始终为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,因此总是会导致错误。