一.前置条件:数学归纳法
步骤1:验证f(1)成立;
步骤2:证明若f(k)成立,则f(k + 1)也成立;
步骤3:联立1,2; 进而f(1)f(2)f(3).......f(n),得证;
二.设计递归函数的三个步骤
1.给递归函数设立一个明确的意义;
2.实现边界条件的程序逻辑;f(1)
3.假设递归调用的结果正确,实现本层逻辑;(数学归纳法的逆运用)
例题
小明买了一堆桃子不知道个数,第一天吃了一半的桃子,还不过瘾,又多吃了一个。以后他每天吃剩下的桃子的一半还多一个,到 n天只剩下一个桃子了。小明想知道一开始买了多少桃子。
分析:题目条件为天数n;
1.f(n)代表桃子总数量(能吃n天的桃子数量);
2.f(1) == 1;
3.f(n) = (f(n - 1) + 1)* 2;
代码实现:
#include <stdio.h>
int f(int n) {
if (n == 1) return 1;
return (f(n - 1) + 1) * 2;
}
int main(){
int n;
scanf("%d", &n);
printf("%d", f(n));
}