生成斐波拉契数列:
Javascript 编写:
function fib(num){ var arr = [1,1]; var index = 0; while(index < num - 2){ arr[index+2] = arr[index+1] + arr[index]; index++; } return arr; } fib(10); //[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
function f(n){ if(n < 0) return -1; if(n == 0 || n == 1){ return 1; } else{ return f(n-1) + f(n-2); } } for(let i = 0; i < 10; i++){ console.log(f(i)); }
Python 编写:
def fib(num): a, b = 1, 1 i = 0; while i < num: print(a) a, b = b, a+b; i += 1 fib(10);//[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
- 总结:
- 脚本语言的数组,太省心了。
- 不推荐递归来算斐波拉契,比如javascript中的f(n)函数,当f(50)就直接卡死浏览器。
- python 那段代码有个小小的雷区: “a , b = b, a + b” , 和 “a = b; b = a + b;” 完全不等价,踩了坑才知道。