let arr=[0,1,1]
function test(n){
if(n<3){
return arr[n]
}
if(arr[n]!==undefined){
return arr[n]
}
let data= test(n-1)+test(n-2 )//如果没有return data的话是娶不到值的
arr[n]=data
return data
}
test(6)
console.log(arr,"text")
//数组的方法
function fibo_arr(n){
var arr = [0,1,1]
if(n<0){
throw new Error('输入的数字不能小于0')
}
if(n>=3){
for(var i = 3; i <= n; i++){
arr[i] = arr[i-1]+arr[i-2]
}
}
return arr
}
console.log(fibo_arr(5)) //0, 1, 1, 2, 3, 5]
//es6结构与方法
function fib(max) {
var t,a=0,b=1,arr = [0,1];
while (arr.length < max) {
[a,b] = [b,a+b]; //es6的解构
arr.push(b)
}
return arr;
}
console.log(fib(10),"fib")
//闭包
function fibo(n){
if(n<0){
throw new Error('输入的数字不能小于0')
}
let arr = [0,1,1];
function recursion(n){
if(n<3){
return arr[n]
}
if(arr[n]!==undefined){
return arr[n]
}
let data = recursion(n-1)+recursion(n-2)
arr[n] = data //将data保存,避免重复求值
return data
}
recursion(n)
return arr
}
console.log(fibo(5),"fibo") //5
//循环
function fiboCCycle(n){
var num1 = 1,num2 = 1,sum,arr=[0,1,1];
for(var i = 3; i < n; i++){
sum = num1 + num2; //用sum累加前两个数之和
num1 = num2;
num2 = sum;
arr.push(sum)
}
if(n==1||n==2){
return 1
}else{
return arr
}
}
console.log(fiboCCycle(10)) //5
js实现斐波那契数列 0 1 1 2 3 5 8 13 21 34 。。。
最新推荐文章于 2022-10-06 11:49:30 发布