我似乎不理解这段代码的输出:
function fib(x) {
return (x === 0 || x === 1) ? x : fib(x - 1) + fib(x - 2);
}
fib(7);
// output is 13
Run Code Online (Sandbox Code Playgroud)
这是我的思考过程:
该函数如何得到13的结果?
小智 5
--------------------------------------------------------------
| Step | Function | Result |
--------------------------------------------------------------
| 1 | f(7) | f(6) + f(5) = a
| 2 | a | [f(5)+f(4)] + [f(4)+f(3)] = b
| 3 | b | [ [f(4)+f(3)] + [f(3)+f(2)] ] + [ [(f(3)+f(2)] + [f(2)+f(1)] ] = c
| 4 | c | [ [ [f(3)+f(2)] + [f(2)+f(1)] ] + [ [f(2)+f(1)] + [f(1) + f(0)] ] ] + [ [ [f(2)+f(1)] + [f(1) + f(0)] ] + [ [f(1) + f(0)] + 1] ] = d
| 5 | d | [ [ [ [f(2)+f(1)] + [f(1) + f(0)] ] + [ [f(1) + f(0)] +1] ] + [ [ [f(1) + f(0)] +1] + [1 + 0] ] ] + [ [ [ [f(1) + f(0)] +1] + [1 + 0] ] + [ [1 + 0] + 1] ] = e
| 6 | e | [ [ [ [ [f(1) + f(0)] +1] + [1 + 0] ] + [ [1 + 0] +1] ] + [ [ [1+ 0] +1] + [1 + 0] ] ] + [ [ [ [1 + 0] +1] + [1 + 0] ] + [ [1 + 0] + 1] ] = f
| 7 | f | [ [ [ [ [1 + 0] +1] + [1 + 0] ] + [ [1 + 0] +1] ] + [ [ [1+ 0] +1] + [1 + 0] ] ] + [ [ [ [1 + 0] +1] + [1 + 0] ] + [ [1 + 0] + 1] ] = g
g= 13
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
665 次 |
| 最近记录: |