这是什么意思,不应该是(n+1)*2么?

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

慕容6172164

2018-12-25 19:49

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

写回答 关注

3回答

  • no4990
    2019-01-07 19:34:46


    第一,整体的关系:

    getPeachNumber(n)代表当天剩下的桃子数

    getPeachNumber(n+1)代表前一天剩下的桃子数

    首先n=1,第n天的桃子数为getPeachNumber(n):

    函数从第1天开始桃子数为:getPeachNumber(1),

    ...

    第10天桃子数getPeachNumber(10)的值为1,题意为第10天吃完剩下一个桃子

    【所以在getPeachNumber递归里,需要每一次都输入(n+1)去获取前一天的桃子数。】


    第二,由关系得等式:

    第10天的桃子数 = 第9天的桃子数/2-1   ===>   第9天的桃子数  = (第10天的桃子数+1)*2

    依次类推....

    第2天的桃子数 = 第1天的桃子数/2-1   ===>   第1天的桃子数  = (第2天的桃子数+1)*2

    【规律是:第n天的桃子数 = (第n+1天的桃子数+1)*2】


    第三,将第一步中整体的关系代入第二步中:

    第n天的桃子数 = (第n+1天的桃子数+1)*2

    getPeachNumber(n) = (getPeachNumber(n+1) + 1) * 2


    说明:getPeachNumber(n+1)就是第n+1天的桃子数,这在第二步中可以得出。


    第四,n代表天数,第10天吃完之后只剩下1个桃子,所以n==10时,返回1。



  • 米虫懒得聪明
    2019-01-03 16:26:55

    按照题目意思呀,题目不是说了会吃一半多一个么,比如第10天剩1个,那么第九天有多少个呢,假设x个,那么就是x/2 - 1(多吃的一个) = 1(剩的的一个);那么x = [1(剩)+1(多吃)]*2,所以就是后一天等于前一天的加一再乘以2,即第一天的桃子数=第二天的桃子数加一再乘二,以此类推

  • 就是头有点冷
    2018-12-25 23:05:36

    这里的 getPeachNumber(n) n代表天数  下面主函数代入值为1  然后带到递归函数里 (getPeachNumber(1+1=2)+1)*2 的意思是 第一天的桃子数=第二天的桃子数加一再乘二 

    米虫懒得聪明 回复十二点半

    按照题目意思呀,题目不是说了会吃一半多一个么,比如第10天剩1个,那么第九天有多少个呢,假设x个,那么就是x/2 - 1(多吃的一个) = 1(剩的的一个);那么x = [1(剩)+1(多吃)]*2,所以就是后一天等于前一天的加一再乘以2,即第一天的桃子数=第二天的桃子数加一再乘二,以此类推

    2019-01-03 16:26:37

    共 2 条回复 >

C语言入门

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

926027 学习 · 20793 问题

查看课程

相似问题