问答详情
源自:5-8 递归函数(二)

知道这样不行,但不知道为什么不行

 num =(getPeachNumber(n)+1)*2; 这样做的话,和原来的差别体现在哪里?我本意是想再打印出第十天所剩桃子1个,怎么打印出来

提问者:幕布斯6946245 2015-08-12 23:56

个回答

  • 伊兮尘昔
    2015-08-13 10:07:57
    已采纳

     if(n==10)

        {

           printf("第10天所剩桃子1个\n");

           return 1;       //递归结束条件

        } 

    这样不就好喽?

  • xunluzhe
    2015-10-10 22:34:19

    #include <stdio.h>

    float getPeachNumber(n)

    {

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

        if(n==11)

        {

           return num=-0.5;       //递归结束条件

        } 

        else

        {    

            num =(getPeachNumber(n+1)+1)*2 ;   //这里是不应该用递归呢?

             printf("第%d天所剩桃子%.0f个\n", n,num ); //天数,所剩桃子个数

        }

        return num;

    }

    int main()

    {

        float num = getPeachNumber(1);

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

        return 0;

    }

    这样写就行了

  • 幕布斯6946245
    2015-08-13 10:34:23

    这样的话是手动输入的,我的意思是自动输出的。就像第9天所剩桃子4个
    第8天所剩桃子10个
    第7天所剩桃子22个
    第6天所剩桃子46个
    第5天所剩桃子94个
    第4天所剩桃子190个
    第3天所剩桃子382个
    第2天所剩桃子766个
    第1天所剩桃子1534个

    只是用一行代码 “printf("第%d天所剩桃子%d个\n",n, num);”就全部打印出来。然而当n=10就终止了吧,那能不能怎样修改,使得“第十天所剩桃子1个”能够不依靠“ printf("第10天所剩桃子1个\n");”这一句就打印出来呢?哈哈,我只是比较喜欢研究深一点