我知道:
int fib(int n)
{
if (n == 0 || n == 1)
return 1;
return fib(n ? 1)+ fib(n ? 2);
}
Run Code Online (Sandbox Code Playgroud)
当n = 5时,fib(5)评估为:
fib(5)
fib(4) + fib(3)
(fib(3) + fib(2)) + (fib(2) + fib(1))
((fib(2) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1))
(((fib(1) + fib(0)) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1))
Run Code Online (Sandbox Code Playgroud)
请注意,每个基本元素被多次使用,有没有办法使用map来存储前一个值,只需要做fib(n - 1)+ fib(n - 2)吗?