zoukankan      html  css  js  c++  java
  • 递归和冒泡

    递归

    简单来说就是自己调自己

    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]交换位置

  • 相关阅读:
    PHP中Foreach在引用时的陷阱 j神
    Yii中Session和cookie的用法 j神
    如何解决web大流量、高并发的问题 j神
    PHP无限级分类的递归算法 j神
    关于breadcrumbs j神
    MySQL索引分析和优化 j神
    Yii笔记 j神
    YII中的URL Management j神
    forward与redirect的区别 j神
    网络编程学习笔记
  • 原文地址:https://www.cnblogs.com/zzq123/p/9830956.html
Copyright © 2011-2022 走看看