递归算法解决C++猴子吃桃问题
文章标签
navicatmysqllinux
一、问题描述
有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!以后每天猴子都吃其中的一半,然后再多吃一个。当到第十天时,想再吃时(还没吃),发现只有一个桃子了。求原来有多少个桃子。
二、递归算法求解问题
这个问题可以使用递归算法来求解。假设原有n个桃子,则第十天只剩下一个桃子,根据题目可知:
第十天:1 = n / 2^9 - 1 第九天:f(9) = 2*(1+1) = 4 第八天:f(8) = 2*(4+1) = 10 ... 第二天:f(2) = 2*(f(3)+1) 第一天:f(1) = 2*(f(2)+1)
可以看出,通过递归算法可以不断地向前推导出每一天的桃子数量,直到第一天得到原有桃子的数量。
三、C++代码示例
#include <iostream> using namespace std; int PeachNum(int day) { if (day == 10) { // 第十天只剩一个桃子 return 1; } else { return (PeachNum(day+1) + 1) * 2; } } int main() { int peachNum = PeachNum(1); cout
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
上一篇:C++函数内联 下一篇:C++中ctime库的时间处理函数
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。