趣味算法:猴子吃桃问题的循环与递归解法
创作时间:
作者:
@小白创作中心
趣味算法:猴子吃桃问题的循环与递归解法
引用
CSDN
1.
https://blog.csdn.net/markingyi/article/details/141573103
题目描述
猴子第一天摘下若干个桃子,当天吃了一半,后面又多吃一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。后面每天猴子都吃了前一天剩下的一半零一个。到第十天想再吃时,只剩下一个桃子。求第一天共摘了多少桃子。
输入格式
无。
输出格式
一个整数。
解题思路
这个题目可以使用递归求或者循环求和解出。
循环求和
我们可以初始化 n 为最后一天的桃子数目 1,然后经过一次循环让n变成倒数第二天的桃子数目 n = 2*(n+1),重复循环9次得到最初的桃子数目。
递归求和
因为我们知道当天的桃子数目为前一天的桃子数目加上1再乘以二倍。所以递归函数的返回值为 2*(fun(n-1)+1),fun(n)表示第n天的桃子数目,退出递归的边界条件为n==1时返回1。
具体代码
循环方案代码
#include<stdio.h>
int main(void)
{
int n = 1,i;
for(i = 0;i<9;i++)
{
n = 2*(n+1);
}
printf("%d",n);
}
递归方案代码
#include<stdio.h>
int fun(int n)
{
if(n == 1)
return 1;
return 2*(fun(n-1) + 1);
}
int main(void)
{
printf("%d",fun(10));
}
总结
解题的方法很简单,但是这道题反映了一个算法的经典的思想,已知结果求初始过程。实则这道题也有其他的变种,比如老鼠藏奶酪问题。而且这道题也并不局限10天。
热门推荐
一个月工时计算:如何科学安排你的工作时间?
农民工工资保证金:谁来缴?比例多少?怎么用?
劳保手套中的橡胶和乳胶有什么区别?
探索咸宁:自然美景与文化之旅的完美结合
高中生的焦虑:理解、开导与应对策略
腹痛、腹胀、呕吐,小心肠梗阻!别等严重才就医!
我国学者揭示间歇性禁食抑制毛囊再生机制
生活饮用水检测标准值及监测方法详解
新版《生活饮用水卫生标准》发布:水质指标由106项调整为97项
奥运里的“奥秘”丨关于马拉松的这些知识你知道吗?
沈阳北站到眼科医院出行攻略:四种方式任你选
一文读懂碘与甲状腺健康的关系
《大海》这歌为何经久不衰?你看歌词写的多美妙!
显微镜刻度尺怎么看
时间同步协议详解:从原理到应用的全方位解析
基金季报揭示神秘资金力挺A股:耗资千亿增持,至今一股未卖
2024 JASE第11期精粹:心血管超声领域八大前沿研究汇总
捷达柴油车的燃油经济性如何
成都网约车市场调查:40多名司机讲述行业现状与困境
自动驾驶系列—颠覆未来驾驶:深入解析自动驾驶线控转向系统技术
社区活动与社会凝聚力:现状、挑战与未来展望
内蒙古经济频道直播:深度解读区域经济发展新机遇与挑战
生姜治便秘方法,是真的有效吗
工程价格有争议应该找谁解决
社交媒体时代的"裂痕":如何维护真实的人际关系
新能源转型,为经济发展注入新活力
网友:身上好多痣,需要去除吗?医生:要这么看……
化纤面料大揭秘:分类、特点与应用全解析
湖北云梦县博物馆:简牍寻文脉 古泽绽异彩
太阳活动对人类的影响