用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等
function fibonacci(n) { if(n===1 || n===2) return 1 let pre = 1 let cur = 1 let sum = -1 for(let i=3;i<=n;i++){ sum = pre+cur pre = cur cur = sum } return sum }
function fibonacci(n) { // 1,1,2,3,5,8 var arr=[0,1]; var len=arr.length; for (var i=0;i<n-1;i++) { arr.push(arr[len-1]+arr[len-2]); len=arr.length; console.log(arr); } return arr[len-1]; }
function fibonacci(n) { //一、递归解法 //return n<=2?1:fibonacci(n-1)+fibonacci(n-2); //二、循环解法 var num1=1; var num2=1; for(var i=2;i<n;i++){ num2+=num1; num1=num2-num1; } return num2; }
var _fib = (function (n) { var memory = [0, 1]; return function (n) { for (var i = memory.length; i <= n; i++) { memory[i] = memory[i - 1] + memory[i - 2]; } //console.log(memory.length + ' numbers saved.'); return memory.slice(0,n+1); }; })(); var fibonacci = function (n) { return _fib(n)[n]; }
var _fib = (function (n) { var memory = ['0', '1']; function add(a, b) { var res = '', c = 0; a = a.split(''); b = b.split(''); while (a.length || b.length || c) { c += ~~a.pop() + ~~b.pop(); res = c % 10 + res; c = c > 9; } return res.replace(/^0+/, ''); } return function (n) { for (var i = memory.length; i <= n; i++) { memory[i] = add(memory[i - 1], memory[i - 2]); } //console.log(memory.length + ' numbers saved.'); return memory.slice(0, n + 1); }; })(); var fibonacci = function (n) { return _fib(n)[n]; }
var _Fib = (function (n) { var memory = ['0', '1']; var add = function (a, b) { var res = '', c = 0; a = a.split(''); b = b.split(''); while (a.length || b.length || c) { c += ~~a.pop() + ~~b.pop(); res = c % 10 + res; c = c > 9; } return res.replace(/^0+/, ''); } return { get: function (n) { for (var i = memory.length; i <= n; i++) { memory[i] = add(memory[i - 1], memory[i - 2]); } //console.log(memory.length + ' numbers saved.'); return memory.slice(0, n + 1); }, clear: function () { //console.log('Memories reset.') memory = ['0', '1']; } }; })(); var fibonacci = function (n) { if (n < 0) { _Fib.clear(); } else { return _Fib.get(n)[n]; } }