为了账号安全,请及时绑定邮箱和手机立即绑定

c语言入门之, 5-8 递归函数

#include <stdio.h>

int getPeachNumber(n)

{

    int num;    //定义所剩桃子数

    if(n==10)

    {

    num=1;

    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;

}


代码中,   n代表天数,  num代表桃子数,而(getPeachNumber是什么意思呢?

(getPeachNumber(n+1)+1)*2;   ,  加一是因为它多吃了一个, *2是因为吃了一半,可是为什么要加两次一呢,  不太理解, 

求解。 谢谢。

正在回答

2 回答

getPeachNumber(n+1)中的n+1代表的是天数,n是今天,n+1是第二天。所以 getPeachNumber(n+1) 就是指第二天的桃子数。(getPeachNumber(n+1)+1)*2 就是指第二天的桃子数加1再乘与两倍,得到今天的桃子数。

1 回复 有任何疑惑可以回复我~
#1

火焰之矢

太感谢了
2017-07-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       924455    人
  • 解答问题       20757    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

c语言入门之, 5-8 递归函数

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信