C语言 猴子吃桃

C语言 猴子吃桃
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第2天早上将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第n天早上想再吃时,见只剩下一个桃子了.求第1天共摘了多少桃子?
以下代码: 求一个详细的解答与分析 一步一步 感激不尽 :
#include
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
其他人气:532 ℃时间:2020-01-30 01:45:46
优质解答
其实这是个递归问题!
思路分析如下:
某一天吃的是前一天的一半还多一个,假设今天剩下为x1,昨天共有x2个桃子,它们的关系是:x1=x2/2-1,即x2=(x1+1)*2,那么既然已经知道今天剩下的桃子,那么就可以知道,昨天的,要是知道昨天的,那么前天的就知道了,要是知道前天的,那么大前天的也就知道了、、、、、、到最后一定知道第一天的陶子总数.
现在我们来分析你的代码:
从代码可以知道,第九天只剩下一个桃子了,也就的循环九次,故代码为:
while(day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
不懂的我们在交流!
我来回答
类似推荐
请使用1024x768 IE6.0或更高版本浏览器浏览本站点,以保证最佳阅读效果。本页提供作业小助手,一起搜作业以及作业好帮手最新版!
版权所有 CopyRight © 2012-2024 作业小助手 All Rights Reserved. 手机版