递归:函数调用自身就是递归,要添加停止操作
把复杂的问题分解成若干个简单的解
function fn(n){ //斐波那契数列
if(n1||n2){
return 1;
}
return fn(n-2)+fn(n-1);
}
console.log(fn(6));
var arr=[10,5,14,34,32,12,7,4];
function charu(arr){ //插入排序
for(var i=1;i<arr.length;i++){
var index=i;
for(var j=i-1;j>=0;j–){
if(arr[j]>arr[index]){
var num=arr[j];
arr[j]=arr[index];
arr[index]=num;
index=j;
}
}
}
return arr;
}
console.log(charu(arr));
var arr=[10,5,14,34,32,12,7,4];
function foo(arr){ //递归快速排序
if(arr.length<=1){
return arr;
}
var num=Math.floor(arr.length/2);
var arrl=[];
var arrc=[];
var arrr=[];
for(var i=0;i<arr.length;i++){
if(arr[i]>arr[num]){
arrr.push(arr[i]);
}else if(arr[i]<arr[num]){
arrl.push(arr[i]);
}else{
arrc.push(arr[i]);
}
}
return arguments.callee(arrl).concat(arrc,arguments.callee(arrr));
}
console.log(‘递归:’+foo(arr));
var arr=[10,5,14,34,32,12,7,4];
function maopao(arr){ //冒泡排序
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
arr[j]=arr[j]+arr[j+1];
arr[j+1]=arr[j]-arr[j+1];
arr[j]=arr[j]-arr[j+1];
}
}
}
}
maopao(arr);
console.log(‘冒泡:’+arr);
var arr=[10,5,14,34,32,12,7,4];
function xuanze(arr){ //选择排序
for(var i=0;i<arr.length-1;i++){
var max=arr[i];
var index=i;
for(var j=i+1;j<arr.length;j++){
if(arr[j]<max){
max=arr[j];
index=j;
}
}
max=arr[i];
arr[i]=arr[index];
arr[index]=max;
}
}
xuanze(arr);
console.log(arr);