题目要求
有一堆桃子,猴子第一天吃了其中一半,并且多吃了一个!以后每天猴子都吃其中一半,然后再多吃一个.当到了第十天的时候,想再吃(还没吃),发现只有一个桃子了,问:最初共有多少个桃子?
思路分析
这猴子挺能吃啊,算数还可以哈,挺懂事的
言归正传,第十天,还没吃,只有一个桃子,可以推测除第九天的桃子数量,每天都吃其中的一半,然后再多吃了一个
day9 = (day10 +1 ) *2
day8 = (day9 + 1 ) *2
..........
根据天数day来确定桃子的个数peachNum
为什么是根据天数来确定桃子的个数?因为天数是已知,而且题目要求是求桃子的最初的数量!
撸写代码
#include<stdio.h>
int peach(int day)
{
if(day==10)
{
return 1;
}
else
{
return (peach(day+1)+1)*2; //为什么day要+1?因为第9天的桃子,是第10天数量+1个的2倍
}
}
int main()
{
int peachNum=peach(1);
printf("\n第一天有%d个桃子",peachNum);
return 0;
}
测试结果
当然了,除了题目要求之外 也可以将代码写得更完美一点
#include<stdio.h>
int peach(int day)
{
if(day==10)
{
return 1;
}
else
{
return (peach(day+1)+1)*2; //为什么day要+1?因为第9天的桃子,是第10天数量+1个的2倍
}
}
int main()
{
int day;
printf("请输入天数:");
scanf("%d",&day);
int peachNum=peach(day);
printf("\n第%d天有%d个桃子",day,peachNum);
return 0;
}
测试看看