递归的小栗子

递归函数特点:

  1. 每一级函数调用时都有自己的变量,但是函数代码并不会得到复制,如计算5的阶乘时每递推一次变量都不同;
  2. 每次调用都会有一次返回,如计算5的阶乘时每递推一次都返回进行下一次;
  3. 递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序;
  4. 递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反;
  5. 递归函数中必须有终止语句。

例子:

猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。

程序:

#include <stdio.h>
int getPeachNumber(n)
{
    int num;    //定义所剩桃子数
    if(n==10)
    {
       return 1;     //递归结束条件
    } 
    else
    {
        num =(getPeachNumber(n+1)+1)*2;   
        printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
    }
    return num;
}
int main()
{
    int num = getPeachNumber(1);
    printf("猴子第一天摘了:%d个桃子。\n", num);
    return 0;
}

结果:

getPeachNumber(2)=getPeachNumber(1)/2 - 1
推出
getPeachNumber(1)=(getPeachNumber(2)+1)*2
所以
num = (getPeachNumber(n+1)+1)*2

时间: 2024-10-13 00:22:10

递归的小栗子的相关文章

递归(以及几个关于递归的小例子)

在说递归之前,我给大家说一个小故事,故事就是在说递归之前,我给大家说一个小故事,故事就是在说递归之前,我给大家说一个小故事,故事就是在说递归之前,我给大家说一个小故事,故事就是在说递归之前我给大家说一个小故事...... 这个故事的名字就叫做递归...哈哈. 故事虽然有点扯淡,但它却很好的解释神马叫做递归. 递归的正式定义: 在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他所有情况都能被还原为其基本情况. 例如,下列为某人祖先的递归定义: 某人的双亲是他

Javaweb统计在线人数的小栗子

最近在学习Javaweb相关的内容(不黑不吹之前对web开发零基础),下面通过一个统计在线人数的小栗子讲讲Servlet监听器吧 开发环境 eclipse  tomcat 7 先说说这个小栗子的构思: 首先要考虑的就是通过什么方式能够统计在线人数?很容易想到可以通过session来统计在线人数为什么不是request呢?因为request在请求结束时即服务器返回资源时就被销毁了,也就是说request的作用域不足以用以统计在线人数.服务器在第一次接受一个用户请求时会给该用户分配一个session

一个小栗子聊聊JAVA泛型基础

背景 周五本该是愉快的,可是今天花了一个早上查问题,为什么要花一个早上?我把原因总结为两点: 日志信息严重丢失,茫茫代码毫无头绪. 对泛型的认识不够,导致代码出现了BUG. 第一个原因可以通过以后编码谨慎的打日志来解决,我们今天主要来一起回顾下JAVA泛型基础. 一个小栗子 先看下面一个例子,test1实例化一个List容器的时候没有指定泛型参数,那么我们可以往这个容器里面放入任何类型的对象,这样是不是很爽?但是当我们从容器中取出容器中的对象的时候我们必须小心翼翼,因为容器中的对象具有运行时的类

py爬虫 —— 三个爬虫的小栗子

三个爬虫的小栗子 第一个例子 —— 京东商品的爬取案例 import requests def getHTMLtext(url): try: r = requests.request('get' ,url ) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "出现异常" url = "https://item.jd.com/100005477055.html&

ajax跨域请求 小栗子 jsonP

跨域简单理解就是跨服务调用方法 一个常见的ajax模板  前台jsp 后台接受请求 运行结果 结局方法 返回成功 本栗子楼主按视频教程截图........

php实现监控在线服务应用程序小栗子

下面我就给大家举个栗子(例子) 某单位需要实现监控服务器状态,和监控服务器应用网站,还有需要监控服务器的中间件,数据库状态监控.听到这个任务是不是恨透头疼,这想起来是不是头疼.还好有系统可用,但是我现在看来又发现了一个问题,那些应用现在都被虚拟化了,能用监控系统监控的只有固定的服务器.其他的虚拟化的主机都无法经行监控.现在我就提供一个监控解决方案. 1.该方案是基于TCP , IP协议,http协议的请求解决方案.我们可以通过监控主机的IP地址和端口获取该台服务器上所有的应用和服务状态.前提是在

python入门之小栗子

点球小游戏: from random import choice score=[0,0]direction=['left','center','right'] def kick(): print '=====You Kick!=====' print 'Choose one side to shoot' print 'left center right' you=input() print 'You kicked '+you com=choice(direction) print 'Comput

关于导航宽度高度自适应的小栗子

1 /* 2 * To change this license header, choose License Headers in Project Properties. 3 * To change this template file, choose Tools | Templates 4 * and open the template in the editor. 5 */ 6 /* 自定义代码 */ 7 function windowResize() { 8 var winW = $(wi

一个利用sed和awk处理文本的小栗子

这两天做<Linux操作系统>课程的作业,碰到了一个题目,感觉很有意思,很考验对awk掌握的熟练度,故特意拿来分享. 首先说题目是这样的,有这样一段文本: RECORD #这是多余的注释行one #record_type students #这是多余的注释行two F sno 11111110000 F name 王铁蛋 F gender 男 F age 20 F class 网络工程01 F region 湖北省武汉市 . RECORD #这是多余的注释行one #record_type s