编写一个返回指定Fibonacci数的方法?

时间:2016-04-15 16:08:13

标签: java arrays recursion fibonacci

Fibonacci序列是一组数字,其中前两个数字后面的每个数字是前两个数字的总和,得到以下序列:

0 1 1 2 3 5 6 13 21 34 55 89 144 233 377 610 987 1597 2584 4181

如何使用递归编写一个方法,该方法将返回指定的斐波纳契数?我想避免使用数组

这是我到目前为止所拥有的

public static int fibo(int n)
{
    if (n==1)
        return 1;
    else
        return //this is the part i am stuck on

3 个答案:

答案 0 :(得分:0)

由于某个斐波那契数字(1除外)在其前身上,您可以调用:

public static int fibo(int n) {
    if (n < 0) {
        throw new IndexOutOfBoundsException("Can't calculate fibonacci number for negative index");
    } else if(n == 0 || n == 1) {
        return n;
    }

    return fibo(n-1) + fibo(n-2);
}

答案 1 :(得分:0)

public static int fibo(int n){ 
  if(n<=2)
    return (n-1);
  else 
    return fibo(n-1) + fibo(n-2);
}

每个斐波纳契数是其2个前辈的总和。你不能只有n = 1的基本情况,因为在计算n = 2时你会发现它是n = 1和n = 0的总和?哪个不会被定义。

注意:这假设你是1个索引的纤维数列表,即0是第一个1,第二个,然后是第三个等。

答案 2 :(得分:-1)

public class Fibonacci
{
    public static int fibonacci(int n)
    {
        if (n == 0)
            return 0;
        else if (n == 1)
            return 1;
        else
            return fibonacci(n - 1) + fibonacci(n - 2);
    }

    public static void main(String[] args)
    {
        System.out.println(fibonacci(11));
    }
}