猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
方法一:
#include<stdio.h>
void main(){
int day,day1,day2;
day=9;
day2=1;
for(day=10;day>1;day--){
day1=(day2+1)*2;//第1天的桃子数是第2天桃子数加1后的2倍
day2=day1;
}
/* while(day>0){
day1=(day2+1)*2;//第1天的桃子数是第2天桃子数加1后的2倍
day2=day1;
day--;
} */
printf("第一天共摘了%d个桃子\n",day1);
}
方法二:
#include<stdio.h>
#define N 10
void main() {
int sum = 1;
int i;
for (i=1;i<N;i++) {
sum=(sum+1)*2; //第1天的桃子数是第2天桃子数加1后的2倍
}
printf("第一天共摘了%d颗桃子\n", sum);
}
方法三:函数递归
#include<stdio.h>
int fun(int day){
if (day == 1){
return 1;
}else{
return (fun(day-1) + 1) * 2;
}
}
int main() {
printf("第一天共摘了%d颗桃子", fun(10));
}