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

请教:为什么只给出n=10就可以打印9~1天的所剩桃子数呢?

#include <stdio.h>

int getPeachNumber(int 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()

    getPeachNumber(10);

    

    int num = getPeachNumber(1);

    printf("猴子第一天摘了:%d个桃子。\n", num);

    return 0;

}


正在回答

3 回答

num = (getPeachNumber(n+1)+1)*2;这个是怎么循环呢?

0 回复 有任何疑惑可以回复我~

你有一个错误 getPeachNumber(10);   你的代码中这一行的下面已经给出来int num= getPeachNumber(1);

你再给他一个 getPeachNumber输入一个10,就重复了。

你输入的不是10而是1!

在语句 int num=  getPeachNumber(1); 中括号里面的就是你要输入的值。

为什么等得到9~1天的桃子数是因为你使用了递归函数num = (getPeachNumber(n+1)+1)*2; 这句话让程序能够一次次循环使用上一个语句的结果

n=1时

num =( getPeachNumber(2)+1)*2; 

继续递归

num = (getPeachNumber(3)+1)*2; 

继续

num = (getPeachNumber(4)+1)*2; 

num = (getPeachNumber(5)+1)*2;

num = (getPeachNumber(6)+1)*2;  

num = (getPeachNumber(7)+1)*2; 

num = (getPeachNumber(8)+1)*2;

num = (getPeachNumber(9)+1)*2; 

直到结束n==10

0 回复 有任何疑惑可以回复我~

按原题条件可以正向打印

#include<stdio.h>
int main(){
int day,num;
num = 1;
printf("第10天剩余桃子%d个\n",num);
for ( day=9;day>0;day--) {//从剩下桃子计算,吃9天
num = (num+1)*2;
printf("第%d天剩余桃子%d个\n",day,num);}
printf("最初的时候共有桃子 %d 个\n",num);
return 0;}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请教:为什么只给出n=10就可以打印9~1天的所剩桃子数呢?

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