題目要求
有一堆桃子,猴子第一天吃了其中一半,並且多吃了一個!以後每天猴子都喫其中一半,然後再多喫一個.當到了第十天的時候,想再喫(還沒喫),發現只有一個桃子了,問:最初共有多少個桃子?
思路分析
這猴子挺能喫啊,算數還可以哈,挺懂事的
言歸正傳,第十天,還沒喫,只有一個桃子,可以推測除第九天的桃子數量,每天都喫其中的一半,然後再多吃了一個
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;
}
測試看看