程序设计典型算法之递推法
一时兴起,刚吃完晚饭,突然又想写点东西,可能太久没有写东西了吧!
问题:小猴吃桃问题。小猴在一天内摘了若干桃子,当天吃掉一半多一个;第二天吃掉剩下的一半桃子多一个;以后每天都吃掉尚存桃子的一半多一个。直到第七天早上要吃时,只剩下一个了,问小猴共摘了多少个桃子?
解题思路:可以从最后一天推出倒数第二天的桃子数量,再从倒数第二天推倒数第三天,依次往前。同穷举法一样,我用了一个循环,从第七天循环到第一天。
上代码:
#include <stdio.h>
int main() {
int n = 1; //第七天的桃子数
for (int i = 1; i <= 7; i++) { //i表示从7到1的天数
int t;
t = 2 * (n + 1);
n = t; //每一天的桃子总数赋值给n
}
printf("%d\n", n);
return 0;
}
运行结果: