递归和冒泡

递归

简单来说就是自己调自己

function aaa(){
    aaa();
}

这是本质上的理解;例题:

公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?

这里我们先用for循环来做

//最后一天剩下一个桃子
var taozi=1;
 //反推

 for(var i=1;i<=6;i++){
     taozi= (taozi+ 1) * 2;
 }
 document.write("公园里刚开始有"+taozi+"个桃子");

然后我们用递归来做:

//定义一个方法:   目的求 第n天有几个桃子
    
//    第n天的桃子数量  = ( 第n+1天数量+1)*2;
 
        var tao = 1;
    function aaa(n){
        if(n==7){
            tao =1;
            
        }else{
            
            tao = (aaa(n+1)+1)*2
        
            
            
        }
        return tao;
    }
    
    alert(aaa(1));            

冒泡:

有这么一个数组[70,34,60,100,49,20,59,98]  让它从小到大排列

var shu = [70,34,60,100,49,20,59,98];
    
    for(var o=0;o<shu.length-1;o++){
        for(var a = 0;a<shu.length-1-o;a++){
            if(shu[a]>shu[a+1] ){
                var zhong;
                zhong = shu[a];
                shu[a] = shu[a+1];
                shu[a+1] = zhong;
            }
        }
    }
    
    console.log(shu);

思路就是  我们先把第一个数跟第二个数比较 哪个大,哪个放在后面  然后第二个数再跟第三个数比较,大的放在后面

这样一轮循环下来,最大的数已经被我们换到了后面,进行第二次循环,要注意的是第二次循环,我们只需要除最大的数之外的其他数循环就好了,这样每次循环都少一个数

要注意的是在交换位置的时候 需要设置一个中间变量来存放数值

var zhong;

zhong = shu[a];

shu[a] = shu[a+1];

shu[a+1] = zhong;

这样才能把shu[a]和shu[a+1]交换位置

posted @ 2018-10-22 16:41  张宗强1  阅读(382)  评论(0编辑  收藏  举报