猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将第一天剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,发现只剩下一个桃子了。
编写程序求猴子第一天摘了多少个桃子。
#include<stdio.h>
//第10天剩余num = 1
//第9天剩余num = (第10天的num + 1) *2 =4
//第8天剩余num = (第9天的num + 1) *2 = 10
//...
// )
void eatPeachNumber(){
int x1, x2=1;
/// printf("%d \n", getPeachNumber(1));
int day =9;
while (day > 0) {
x1 = (x2 + 1) * 2;
x2 = x1;
day--;
}
printf("%d \n", x1);
}
//递归实现
int getPeachNumber(int n){
int num = 1;
if (n == 10) {
printf("the %d day peachNumber=%d\n", n, num);
return 1;
} else {
num = (getPeachNumber(n+1) + 1) * 2;//后一天的+1 的两倍等于前一天
printf("the %d day peachNumber=%d\n", n, num);
}
return num;
}
int main()
{
eatPeachNumber();
getPeachNumber(1);
return 0;
}
执行结果: