小编典典

快速斐波那契递归

algorithm

我正在尝试回顾有关斐波那契递归的算法。下列:

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

不是我要找的,因为它是贪婪的。这将成倍增长只看[Java递归斐波那契数列-初始参数越大,将进行的无用调用越多)。

可能会出现类似“循环参数移位”的情况,其中调用先前的斐波那契值将检索值,而不是再次进行计算。


阅读 238

收藏
2020-07-28

共1个答案

小编典典

也许像这样:

int fib(int term, int val = 1, int prev = 0)
{
 if(term == 0) return prev;
 return fib(term - 1, val+prev, val);
}

此函数是尾递归的。这意味着可以对其进行优化和高效执行。实际上,它已被优化为一个简单的循环。

2020-07-28