闲谈一下js中的递归和冒泡算法

1.递归说白了 就是自己调用自己  但是有一个前提就是 必须有一个种中止条件 否则就会陷入死循环 导致电脑崩溃  

最经典的摸过去 斐波那契数列数列

1  1   2   3   5   8   13  21   34   55  .。。。。。。。

我也是闲来无事 写了下 

 function fabs(n){

     if(n==1) return 1;   //  当 n=1 的时候 返回 1

     if(n==2) return 1;  //  当 n=2  返回 1 

     if(n>=3){

          return fabs(n-2)+fabs(n-1);    // 大于 等于 3的时候   调用自身   也可以用 arguments.callee 指代函数自身 es5中 不提倡使用

   }

 }

 console.log(fabs(10))   // 输出 55

// 递归算法 比较消耗性能 数字小还好  超过  44 我的电脑就得计算很长时间 毕竟 node.js是单线程执行的 

2.写完 递归之后 让我想起来大学时候学习C语言的时候学习的冒泡算法 

闲来无事也是写了一下   

用来将一个无序的数组进行排序 

let arr=[1,5,6,4,9,7,3,2,8];

for(var i=0;i<arr.length;i++){

    for(var j=0;j<arr.length;j++){

        if(arr[i]>arr[j]){

            var tmp=arr[i];

            arr[i]=arr[j];

            arr[j]=tmp;

        }

    }

}

console.log(arr)

冒泡的原理是:取第一位数字 依次和每一个数字进行比较,大于的话就换俩者位置 这一先把最小的数值就一轮一轮冒泡出来  

下面是每一轮走的数据   看看每次 数字 1所在的位置 像不像 鱼儿冒泡一样 哈哈

[1, 5, 6, 4, 9,7, 3, 2, 8 ]   // 初始数据
[ 5, 1, 6, 4, 9,7, 3, 2, 8 ]
[ 6, 5, 1, 4, 9,7, 3, 2, 8 ]
[ 6, 5, 4, 1, 9,7, 3, 2, 8]
[ 9, 6, 5, 4, 1,7, 3, 2, 8 ]
[ 9, 7, 6, 5, 4,1, 3, 2, 8]
[ 9, 7, 6, 5, 4,3, 1, 2, 8 ]
[ 9, 7, 6, 5, 4,3, 2, 1, 8]
[ 9, 8, 7, 6, 5,4, 3, 2, 1]// 最后一轮
 

发布了141 篇原创文章 · 获赞 64 · 访问量 9136

猜你喜欢

转载自blog.csdn.net/yunchong_zhao/article/details/104254089