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]// 最后一轮