js之-斐波那契数列

斐波那契数列:1、1、2、3、5、8、13、21、34、55。。。。

文字描述:开头两位为1,从第三位起,每一项都等于前2位相加求和

方法一:递归

function fibo(n){
   if( n < 2 ) return 1;
   return fibo(n-1) + fibo(n-2);
}

思路:

  1. 从0开始,前两项,都 return 出数字1
  2. 从第三项,即数字2开始,调用自身,传入前两项的内容,使其相加求和,return 出内容
  3. 但递归比较耗性能

调用方法一看结果

var f1 = document.getElementById('f1');

for( let i=0; i<10; i++){
   f1.innerHTML == "" ? f1.innerHTML = fibo(i) 
   : f1.innerHTML = f1.innerHTML + "、" + fibo(i)
}
// 1、1、2、3、5、8、13、21、34、55

方法二:循环 + es6默认参数 + es6解构赋值

function fibo2(n,fio1=1,fio2=1){

     if( n < 2 ) return 1;

     for( let i=1; i<n; i++){
         [fio1,fio2] = [fio2,fio1+fio2];
     }
     
     return fio2;
}

思路:

  1. 定义方法时,设置默认参数都为1,
  2. 同上,从0开始,前两项,都 return 出数字1
  3. 从第三项开始,即数字2开始,进行循环,通过解构赋值写法,先fio1=fio2,方便进行下次计算,fio2=fio1+fio2进行前两项相加求和,return 出 fio2

调用方法一看结果

var f2 = document.getElementById('f2');

for( let a=0; a<10; a++){
     f2.innerHTML == "" ? f2.innerHTML = fibo2(a) 
      : f2.innerHTML = f2.innerHTML  + "、" + fibo2(a)
}
// 1、1、2、3、5、8、13、21、34、55

如有错误,望提出。有更好的写法的朋友,可以交流一下哦

发布了3 篇原创文章 · 获赞 10 · 访问量 242

猜你喜欢

转载自blog.csdn.net/qq_41797950/article/details/105145602