zoukankan      html  css  js  c++  java
  • 递归函数

    递归给人的感觉总是很高大上,个人感觉再多的理论知识都不如一个完美的例子,不喜勿喷。

    网上看到一个题目:有一堆桃子,猴子每天吃一半后再多吃一个,到第5天时剩余一个桃子,求第一天的个数。

    前一天 = ( 后一天 + 1 ) * 2;  

    例如:第4天 = ( 第5天 + 1 ) * 2 = ( 1 + 1) * 2 = 4;

    代码如下:

     

    /************************************************************* 
    有一堆桃子,猴子每天吃一半后再多吃一个,到第5天时剩余一个桃子 
    *************************************************************/  
      
    #include <stdio.h>  
      
    int recursion(int day)  
    {  
        int total;  
      
        if (day == 5)  
        {  
            return 1;  
        }  
        else if (day < 5)  
        {  
            day++;  
            total = (recursion(day) + 1) * 2;  
            return total;  
        }  
    }  
      
    int main(void)  
    {  
        int i;  
      
        for (i=1;i<=5;i++)  
            printf("第%d天有%d个桃子
    ", i, recursion(i));  
      
        return 0;  
    }  

    运行结果:

    第1天有46个桃子
    第2天有22个桃子
    第3天有10个桃子
    第4天有4个桃子
    第5天有1个桃子
    请按任意键继续. . .


    下面开始逐步讲解高大上的递归:

     

    recursion(1)

    进入int recursion(int day)函数

    day = 1; day < 5; day++; day = 2; total = ( recursion(2) + 1 ) * 2;      //第1天桃子个数未知  
    day = 2; day < 5; day++; day = 3; total = ( recursion(3) + 1 ) * 2;      //第2天桃子个数未知  
    day = 3; day < 5; day++; day = 4; total = ( recursion(4) + 1 ) * 2;      //第3天桃子个数未知  
    day = 4; day < 5; day++; day = 5; total = ( recursion(5) + 1 ) * 2;      //第4天桃子个数未知  
    day = 5; day == 5; return 1;                                             //第5天桃子个数为1(已知)  
    recursion(5) = 1;  total = ( recursion(5) + 1 ) * 2 = 4;  return total ; //第4天桃子个数为4  
    recursion(4) = 4;  total = ( recursion(4) + 1 ) * 2 = 10; return total ; //第3天桃子个数为10  
    recursion(3) = 10; total = ( recursion(3) + 1 ) * 2 = 22; return total ; //第2天桃子个数为22  
    recursion(2) = 22; total = ( recursion(2) + 1 ) * 2 = 46; return total ; //第1天桃子个数为46
  • 相关阅读:
    面向对象基础之类与对象
    常用模块(一)
    re模块与正则表达式
    初识模块
    函数进阶篇
    Spring + Mybatis 读写分离
    java包的所有类生成class
    Oralce数据库的优化
    Java 搜索引擎
    JAVA分布式架构的演进
  • 原文地址:https://www.cnblogs.com/lialong1st/p/7756663.html
Copyright © 2011-2022 走看看