趣味算法:猴子吃桃问题的循环与递归解法
创作时间:
作者:
@小白创作中心
趣味算法:猴子吃桃问题的循环与递归解法
引用
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天。
热门推荐
如何排痰?六种科学方法助你轻松应对
程序初学者推荐学习的三种热门编程语言
实验大鼠和小鼠的区别:选择合适的实验动物,助力科研进展
国家历史文化名城:从何而来,如何更新?
师德师风与教师绩效考核
秧歌+杂耍,宁武非遗文化活动展演走进忻州古城
忻州古城:“保护+传承” 让非遗焕发新生
入住久了才明白,卧室里最实用的设计是这7个,少一个都可惜
泡沫保温箱运输途中注意哪些
英语七选五答题技巧
奥鲁制度的发展与演变
巧用“她力量”:湖北浠水县陆家河村妇女议事会创新基层治理实践
深瞳丨微生物耐药性:人类健康的重大威胁
自制低卡路里美味巧克力
塑料电镀工艺:技术挑战与创新突破
孔子:当老师,我是认真的
岳麓高新区:一条道路聚起一条“产业动脉”
事实证明:父母的层次,就是孩子的命运
保质期对食物浪费的影响:神话与现实
Excel价格表格制作教程:从入门到精通
淋巴细胞绝对值偏高如何应对
当“安宫牛黄丸”遇上“苏合香丸”——谁才是中风急救用药?
如何预防血栓?这些小习惯帮你远离危险
聚宝之盆——新疆文物珍品展
网络运维的入门知识有哪些
香港中文大学于君教授:肠道菌群帮助改善癌症免疫治疗
基金要怎么买才能把风险降到最低?全面解析与实战指南
解码中国高铁发展:从技术引进到自主创新的突破
没钱怎么办:如何通过合法途径实现财富积累与增值
如何避免熬夜带来的负面影响