zoukankan      html  css  js  c++  java
  • 递归实例分析

    1、公园里面有200个桃子,每天吃掉一半,扔掉一个烂的,第六天剩余多少个桃子?

    var sl=200;i=0;
    for(i=0;i<6;i++){
        sl=parseInt(sl/2-1);
        }
        alert(sl);

    2、公园里有一堆桃子,猴子每天吃掉一半,扔掉一个烂的,第六天剩余1个桃子,问刚开始有多少个桃子

    var sl=1;i=0;
    for(i=0;i<6;i++){
        sl=(sl+1)*2;
        }
    alert(sl);

    递归:特点:自己调用自己

    function shuLiang(ts){
        if(ts==6){
            return 1;
            }
        return (shuLiang(ts+1)+1)*2;
        }
    alert(shuLiang(0));

    分析:1、当天的剩余量=(下一天的剩余量+1)*2

    2、设定的函数shuLiang(ts)表示给定一个天数,返回该天的剩余数量

    3、开始循环:首先当ts=0;执行 return (shuLiang(0+1)+1)*2;由于不知ts=1时剩余数量继续循环

                      ts=1;执行 return (shuLiang(1+1)+1)*2;继续循环

                      ts=2;执行 return (shuLiang(2+1)+1)*2;继续循环

                      ts=3;执行 return (shuLiang(3+1)+1)*2;继续循环

                      ts=4;执行 return (shuLiang(4+1)+1)*2;继续循环

                      ts=5;执行 return (shuLiang(5+1)+1)*2;继续循环

                      ts=6;执行 if(ts==6){ return 1;};已知ts=6时剩余数量,将1返回给ts=5;执行return (shuLiang(5+1)+1)*2;

                     求得shuLiang(5);将shuLiang(5)的值返回给ts=4,执行return (shuLiang(4+1)+1)*2;

                     求得shuLiang(4);将shuLiang(4)的值返回给ts=3,执行return (shuLiang(3+1)+1)*2; 

                     求得shuLiang(3);将shuLiang(3)的值返回给ts=2,执行return (shuLiang(2+1)+1)*2;

                     求得shuLiang(2);将shuLiang(2)的值返回给ts=1,执行return (shuLiang(1+1)+1)*2;

                     求得shuLiang(1);将shuLiang(1)的值返回给ts=0,执行return (shuLiang(0+1)+1)*2;

                     求得shuLiang(0);将shuLiang(0)的值交给alert(shuLiang(0))结束循环

  • 相关阅读:
    30多条mysql数据库优化方法,千万级数据库记录查询轻松解决【转】
    安全快速修改Mysql数据库名的5种方法
    ASP.NET Web API 学习【转】
    前端学习必备知识
    为什么引用不了App_Code里的类(报“未能找到类型或命名空间名称”错误)
    【ASP.net】Equals 和 == 的区别
    ADO.NET完整的增、删、改、查
    面向对象--类库、委托、is和as运算符、泛型集合
    面向对象-构造函数和静态方法
    面向对象--多态、虚方法重写、抽象类、接口
  • 原文地址:https://www.cnblogs.com/NCL--/p/7043697.html
Copyright © 2011-2022 走看看