趣味算法:猴子吃桃问题的循环与递归解法
创作时间:
作者:
@小白创作中心
趣味算法:猴子吃桃问题的循环与递归解法
引用
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天。
热门推荐
家庭除虫新方案:矽藻土实现物理驱虫零污染
天下贰·新九天死狱13层高效通关秘籍
疏导教育原则:引领学生潜能释放与自我发展的教育理念
甲骨实物高保真数据归国,AI助力古文释读,发现甲骨新图像
从交朋友到传播宗教:AI在数字世界中的社会实验
苦涩的宗教:人工智能围绕扩展法则展开的圣战
教皇与流行巨星麦当娜的AI合照发布,科技与信仰的交汇
最新!苹果修复两个零日漏洞,涉及iPhone XS以来多款机型
双色球和大乐透,哪个更适合理财小白?
欧洲杯带动彩票热潮,揭秘背后的经济学
老子的道家思想
老子的神秘之旅揭开道德经背后的奥秘
“无为”到底是什么?老子:不是无所作为,更不是顺其自然!
老子说的“道”是自然规律吗?
中奖彩票被调包?这些防坑技巧你知道吗?
浙大妇院吉林院区:专业团队助力备孕,成功率超六成
双色球中奖后,如何快速领奖?
彩票中奖后,你真的知道怎么交税吗?
双11中奖后,如何理性消费和理财?
薰衣草迷迭香:家庭花园的天然驱虫卫士
5种驱蚊植物全攻略:从香茅到薄荷,轻松告别蚊虫困扰
武大团队揭秘艾蒿驱虫成分,可规模化生产用于驱蚊
劳动法明确:临时工一天工资这样计算
长安酒肆:唐诗诞生的社交场
广东女子酒醉街头,专家提醒:健康饮酒与安全防护要并重
中国居民膳食指南推荐:春节饮酒限量标准与注意事项
供电电压偏差:定义、原因、危害与治理措施
《哪吒之魔童闹海》预售破千万:续作在特效与文化传承上全面升级
沟通与成长:维持长久爱情的科学之道
《九天帝尊》三大天尊揭秘:权力、智慧与自由的象征