趣味算法:猴子吃桃问题的循环与递归解法
创作时间:
作者:
@小白创作中心
趣味算法:猴子吃桃问题的循环与递归解法
引用
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天。
热门推荐
梨子吃皮好还是不吃皮好
如何制定高效的检查计划方案?
山茱萸活性成分提取、健康功效与应用研究进展(上)
探寻山茱萸的生长环境及生长地方条件(从土壤到气候)
图解|多地国庆旅游成绩单出炉,哪个城市最热门?
一项研究显示,一种运动降低血压的效果可与药物相媲美
赵光义谋杀赵匡胤在《续资治通鉴长编》是如何记载的?
医学类最吃香的十大专业排名(2025年高考参考)
疫苗接种会不会导致自闭症
日语备考多久合适?日语考试时间安排
2025物理学专业就业前景及方向:好找工作吗?
这7个专业很吃香,就业前景好工资高!偏理考生建议重点关注
骨折分类是什么
山药吃了喉咙痒怎么办?专家解读及预防措施
紫藤花开:4月绽放的紫色浪漫
CHK文件扩展名详解:定义、类型及打开方法
富士山攀登指南——吉田路线
劳务发票税率详解:个人与企业开票税率计算方法
五行补金最多的字 五行之金主宰补充最多
快递面单手机号保护技巧:如何生成虚拟号收快递?
【MATLAB图像锐化终极指南】:揭秘图像锐化算法,提升图像清晰度
银耳汤可防癌抗癌吗 这4大养生好处您可能并不了解
CBA焦点战:广东主场迎战辽宁,新援加盟+主力回归,谁将占据上风?
后现代主义的三个主要特征是什么 代表人物是谁
领队证考试要求及条件分析
淘宝上门取件退货操作流程是怎样的?操作全流程指南教你保护自身权益!
减肥人士必看:荞麦面真的是健康碳水吗?
米粉面热量大揭秘:哪个更高?
商家拒绝开票算违法吗?一文详解消费者权益保护
排便多久算正常