我应该将此递归函数更改为迭代函数...

int rFib(int n)
{   //assumes n >= 0
    if(n <= 1)
        return n;
    else
        return (rFib(n-1) + rFib(n-2));
}


但是,我对此的数学观点还是空白...我将不胜感激。我能够获得其他3个函数,但似乎无法弄清楚这三个函数的数学运算。

public static int fib(int n)
{
    int theFib = 1;
    while(n > 1)
    {
        theFib = n - 1;
        n = n + n - 2;
}
        System.out.println(theFib);
        return theFib;
    }

最佳答案

Fibonacci sequence中的下一个数字是最后两个数字的和,因此您需要记住最后两个数字。

用伪代码,因为您应该自己做一些作业:

n1 = 0
n2 = 1
loop
    n = n1 + n2
    n1 = n2
    n2 = n
end loop


我将它留给您以限制循环。

10-07 19:52
查看更多