慕容6172164
2018-12-25 19:49
num = (getPeachNumber(n+1)+1)*2
第一,整体的关系:
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。
按照题目意思呀,题目不是说了会吃一半多一个么,比如第10天剩1个,那么第九天有多少个呢,假设x个,那么就是x/2 - 1(多吃的一个) = 1(剩的的一个);那么x = [1(剩)+1(多吃)]*2,所以就是后一天等于前一天的加一再乘以2,即第一天的桃子数=第二天的桃子数加一再乘二,以此类推
这里的 getPeachNumber(n) n代表天数 下面主函数代入值为1 然后带到递归函数里 (getPeachNumber(1+1=2)+1)*2 的意思是 第一天的桃子数=第二天的桃子数加一再乘二
C语言入门
926027 学习 · 20793 问题
相似问题