趣味算法:猴子吃桃问题的循环与递归解法
创作时间:
作者:
@小白创作中心
趣味算法:猴子吃桃问题的循环与递归解法
引用
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天。
热门推荐
火焰有影子吗?
晨起不注意?6个小习惯正悄悄“毁掉”你的肝脏
日本人工资平均多少钱?深入了解日本的薪资水平
《黄帝内经·素问》第八篇《灵兰秘典论》
基金加仓的时机如何判断?这种判断有何依据?
著名作家陈忠实病逝享年73岁 《白鹿原》是成名作……
揭开水的双面人身份,极端条件下同时以两种液相存在
冰是从多少度开始融化的?科学家有新发现,你认为的0℃是错误的
2024生育报告出炉,为何生育率持续走低?对经济和社会有何影响?
翡翠龟甲手串的寓意与功效:寓意、象征与佩戴效果解析
周末怎么去八达岭长城
孟鲁司特钠片成人使用的正确方法是什么
鄱阳湖的面积比青海湖大吗
三世诸佛之母、千手千眼、佛道共尊的准提菩萨,到底是何来历
带脉的专业知识
俄语口语短期方法
3万人戏耍40万国军,毛泽东为何说这场战役是“平生最得意之作”
“小花盆配泥炭土”,养多肉的绝配,不积水,更不会烂根!
win10系统怎么找任务管理器
村子如何做民宿项目经理
北京十四中学校概况:设施、师资与升学率全解析
曲面屏贴什么膜好
这一新出土的带马镫骑马俑,“改写了世界军事史”?
日本五日游攻略:如何安排行程,让你玩转东京、大阪和京都!
布局换电柜4600余个,服务6万多位快递小哥
盘龙七片是什么类型的药物
英雄联盟凯隐变身机制详细攻略
Excel表格中插入下一行的多种方法
六种实用方法助你快速背熟课文
如何提高项目成本预测的准确性