猴子吃桃问题的 C 语言实现
猴子吃桃问题是一个经典的递归问题。问题描述通常是这样的:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃当时剩余数量的一半多一个。到第 10 天早上想再吃时,发现只剩下一个桃子了。求第一天共摘了多少桃子?
下面是用 C 语言实现该问题的代码:
#include <stdio.h>
int main() {
int day = 10;
int peaches = 1; // 第10天剩下的桃子数量
// 从第10天向前计算到第一天
for (int i = day; i > 1; i--) {
peaches = (peaches + 1) * 2;
}
printf("猴子第一天共摘了 %d 个桃子。\n", peaches);
return 0;
}
该代码从最后一天(第10天)逆推回第一天。假设第10天只剩下1个桃子,那么第9天的桃子数量就是 (1 + 1) * 2 = 4
。以此类推,计算出第一天的桃子数量。运行这段代码,会输出猴子第一天共摘了多少个桃子。