1 #include <stdio.h> 2 /* 3 题目:猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个; 4 以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子了。问第一天共摘了多少个桃子? 5 6 解题思路:第一:这是一个连续求值的问题。知道第10天剩余桃子的数量,推算第一天摘了多少桃子。(由第十天推算出第九天剩余多少桃子, 7 由第九天推算出第八天剩余多少桃子。以此类推最终求出第一天摘了多少桃子) 8 第二:在连续求值前会有一个结束条件。第10天桃子 = 1; 9 第三:由1,2两点 选择用递归来解决这类问题,逻辑清晰。 10 第四:上次求值结果 = (本次结果+1)*2 (找到通项公式) 11 */ 12 int Peach(int n); 13 int main(void) 14 { 15 int OnePeach = Peach(1); 16 17 printf("%d ",OnePeach); 18 19 return 0; 20 } 21 int Peach(int n) 22 { 23 if(10 == n)//结束条件:第10天的桃子数量 == 1 24 return 1; 25 else 26 return (Peach(n+1)+1)*2;//第n次的桃子数 == (第n+1次的桃子数+1)*2 27 }