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

来源:5-8 递归函数(二)

姝乙

2016-03-25 00:50

#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回答

  • 慕斯0098328
    2016-05-14 10:42:40

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

  • 慕慕9304546
    2016-04-17 14:20:43

    你有一个错误 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

  • 沈山南
    2016-03-25 01:39:55

    按原题条件可以正向打印

    #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;}


C语言入门

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

926209 学习 · 20797 问题

查看课程

相似问题