趣味算法:猴子吃桃问题的循环与递归解法
创作时间:
作者:
@小白创作中心
趣味算法:猴子吃桃问题的循环与递归解法
引用
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年央视春晚彩排亮点抢先看:四大分会场首次亮相,技术创新打造视听盛宴
社区如何联手打好“防拐保卫战”
《封神第二部》特效引热议:质感遭吐槽,预告片能否撑起期待?
预测票房35亿,比《热辣滚烫》还高,《封神2》有望夺冠
沈腾马丽组合能否拯救2025年春晚?
2025年央视春晚第三次彩排亮点抢先看
忻州古城秋季自驾游攻略:金黄秋色中的千年古城
苦菜怎么做才好吃?4种做法,凉血解烟毒,好吃易学!
梁武帝的宗族关系大揭秘
小区里的流浪猫如何科学喂养?从58只锐减至15只,这些社区分享流浪猫治理有效经验
携手温情,共筑流浪猫的希望之家
小区流浪猫怎么管?这些小区探索出了新方法
法律解答:收养流浪猫是否犯法?可能面临哪些处罚?
古代的“正当防卫之实”
北京到忻州古城自驾游攻略:最美自驾路+沿途景点+停车攻略
忻州古城春节探秘:年俗活动大揭秘
北京到忻州古城自驾游攻略:440公里沿途景点美食全攻略
车过户到我名下,不去能行吗
扬州特色小吃:从历史传承到现代创新
扬州必打卡老字号美食推荐:从百年老店到经典名点
扬州必打卡小吃排行榜Top10
去洪崖洞怎么走?这份交通攻略请收好!
重庆交通变迁:从滑竿到水翼飞船
玻璃仪器的使用与维护注意事项
慢性结膜炎平时怎么护理
北京自驾游五台山,一路风景美如画
《真心英雄》领衔,东方卫视2025年黄金剧场必追热剧
网易《蛋仔派对》新手速成秘籍
《蛋仔派对》高手进阶攻略:从零到英雄
公安部教你如何有效举报儿童拐卖