章节
问答
课签
笔记
评论
占位
占位

递归函数(二)

我们对上一小节中求5的阶乘这个例子进行一下剖析,看一看它的运算过程:

程序在计算5的阶乘的时候,先执行递推,当n=1或者n=0的时候返回1,再回推将计算并返回。由此可以看出递归函数必须有结束条件

递归函数特点:

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

一句话总结递归:自我调用且有完成状态。

任务

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

在代码编辑器中:

第7,11,12行根据注释提示填写代码

运行结果为:

?不会了怎么办

1、递归函数中是否出现了调用自身的语句

2、递归函数中是否出现了结束递归的语句

3、参考代码

||
1
#include <stdio
    .h>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最赞回答 / 奥德彪拉香蕉
num = (getPeachNumber(n+1)+1)*2 的意思理解最里面的小括号的“(n+1)”为递归加,即每次递归n的值+1,就是天数,为了获取第10天已知的剩余桃子数量“1”;先算算每天没有吃桃子前剩余的桃子数量第10天,剩余1个桃子;第9天,剩余(1+1)*2=4个桃子;第8天,剩余(4+1)*2=10个桃子;第7天,剩余(10+1)*2=22个桃子;第6天,剩余(22+1)*2=46个桃子;....根据条件,第10天只剩余1个桃子可以计算出第9天的桃子,所以num = (getPeachN...

最新回答 / Clzypx
我也不知道!

最新回答 / 奥德彪拉香蕉
对是对了,不过有一个警告,第二行的参数没有定义类型,虽然没有定义参数类型也可以默认为int整数型,但是会报警告咯。加上int就好了。int getPeachNumber(int n)还有就是,后面这两章节的代码运算好像不验证结果的,提交后就会弹出“不错,慕兄我看好你......”之类的。

最新回答 / qq_慕慕5508019
int getPeachNumber(int n),形参

最赞回答 / 年少无知ing
#include <stdio.h>int getPeachNumber(int n){    int num;    //定义所剩桃子数    if(n==10)    {       num=1;      //递归结束条件    }     else    {        num =getPeachNumber(n+1)*2+2;   //这里是不应该用递归呢?        printf("第%d天所剩桃子%d个\n", n,num); //天数,所剩桃子个数    }    ret...

最赞回答 / 小鸭快跑
先看n=10的时候,getPeachNumber(10)=1;然后倒推,n=9的时候,num=(getPeachNumber(10)+1)*2,也就是4,依次推理可得答案;

最新回答 / qq_慕UI3036048
他要算getPeachNumber(1)就要算getPeachNumber(2)·····,依次递归,所以n是反向的,当算getPeachNumber(10)时候,num=1;······依次递归

最新回答 / weixin_慕码人8394325
前一天n时候一天n+1的桃子数+1的两倍,调用自身再加一个

最赞回答 / 慕娘3551181
getPeachNumber(n)给出的结果sum是第n天在吃之前的桃子数量,也就是第(n-1)天吃完之后剩下的桃子数量。getPeachNumber(n)自定义函数在main()函数中的第一个参数值是  1   ,自定义函数getPeachNumber(n)中的终止条件是  n==10。故不可能出现第100天,第1000天的情况。getPeachNumber(n)自定义函数的if语句中,有一段 printf("第%d天所剩桃子%d个\n", n,num);这是在自定义函数返回num结果之前就已经打印出来...

最新回答 / 慕小羊23
因为第一行getPeachNumber(n),中没有定义n的类型 改为 整型 int n就欧克了

最新回答 / 精慕门2272038
满足n=1,结束循环直接跳到主函数那儿,去运行主函数了

最新回答 / 慕少2300120
#include <stdio.h>int getPeachNumber(int n){    int num;    //定义所剩桃子数    if(n==10)    {        return 1;       //递归结束条件    }     else    {        num = (getPeachNumber(n-1)+1)*2;   //这里是不...
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言