趣味算法:猴子吃桃问题的循环与递归解法
创作时间:
作者:
@小白创作中心
趣味算法:猴子吃桃问题的循环与递归解法
引用
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天。
热门推荐
思科路由器:OSPF协议引入直连路由的实验研究
普洱茶与菊花泡饮的搭配指南:功效、禁忌及正确冲泡方法
古代人起的名字有何文化内涵与命名习惯
南通支云2024赛季纪录片:《我们在一起,才是最好的支云》PART 1
健康科普:芽囊原虫是什么?
股票市场的三种操作方式及其风险评估
大众科普——血型是怎样发现的
减肥必看!这4种主食才是让你变胖的“隐形杀手”
陶渊明的作品风格
列车晚点的原因有哪些?
选择理想床垫的关键因素:硬度、材质与个人偏好
惠东孵化绿棋楠沉香百亿产业
《金刚经》:一生的修行,就是修好八颗心
【国家统计局】发布2月70城房价!重庆房价涨跌如何?
敏捷开发实践 —— 测试驱动开发(TDD)
义净法师身体力行渡海求法,在佛教中国化方面做出了巨大贡献
从尘埃到蓝色星球:地球的诞生与早期演化
国家重点实验室到全国重点实验室意味着什么!
牙齿“痛”了怎么办?根管治疗帮您“把根留住”!
如何计算数据中心的冷却需求?
某数据中心机房空调系统测试分析及优化措施
金钟声声:中国音乐金钟奖的故事
金曲奖入围八项成大赢家 蔡健雅:不自由的灵魂飞起来
研究发现VR或是治疗抑郁症的一种可行方案
笔记本电脑主板驱动需要保持最新吗?为什么?
寒武纪盈利背后:3亿利润引发400亿市值震荡
阿莫西林能治咽炎吗?使用时需谨慎
前端如何跟后端加密一致
最高省时40分钟 优化航路助东航罗马回国航班变快变“绿”
如何阅读工程图纸:新制造商指南