qwe*_*ymk 7 javascript recursion fibonacci
我在看这个网站:http://rosettacode.org/wiki/Fibonacci_sequence#JavaScript并看到了这个程序:
function fib(n) {
return function(n,a,b) {
return n>0 ? arguments.callee(n-1,b,a+b) : a;
}(n,0,1);
}
Run Code Online (Sandbox Code Playgroud)
这是如何工作的,这两个参数(a和b)有什么帮助.我追踪它仍然无法弄清楚它是如何工作的
在function(n,a,b),n作为倒数计数器,并a b存储两个连续的斐波纳契数,用于计算下一个,所以当n达到0时,你有a第n + 1个斐波纳契数(因为真正的斐波纳契有两个1作为开头) ).
例如,n = 4:
n a b
4 0 1
3 1 2
2 2 3
1 3 5
0 5 8
Run Code Online (Sandbox Code Playgroud)
如您所见,a和b的值始终等于Fibonacci数.此外,这与功能编程非常相似(如网站所述的Scheme程序员).