前几天我在看典型的坏斐波那契算法:
public static int fib(int n)
{
// Base Case
if (n < 2)
return 1;
else
return fib(n-1) + fib(n-2);
}
我做了一个有趣的观察。当您调用 fib(n) 时,对于介于 1 和 n 之间的 k, fib(k) 被精确地称为 fib(n-k+1) 次(或 fib(nk) 取决于您对 fib(0) 的定义)。此外,fib(0) 被称为 fib(nk-1) 次。这让我发现在 fib(100) 中恰好有 708449696358523830149 调用 fib 函数。
你知道这个函数还有其他有趣的观察吗?
附加说明:我知道所有关于记忆等很酷的东西......我不是在问如何优化它。