递归函数
自己调用自己的函数(直接或间接)。递归函数是最基础的,后续算法众多用其思想。
设计的三个重要部分
一个明确的语义
边界条件的设定
假设递归函数调用返回的结果是正确的,实现本层函数逻辑
例子
阶乘函数设计
#include<iostream>
using namespace std;
int fun(int n) { // 明确的语义
if (n == 1) { return n; } // 递归出口
return n * fun(n - 1); // 递归体
}
int main() {
cout << fun(5) << endl;
system("pause");
return 0;
}
求桃子数量
猴子吃桃,最后一天剩下一个桃子,后一天桃子数量加上1的再乘2就是前一天的桃子数量,求n天需要多少桃子。
1.f(n),能吃n天的桃子数量
2.能吃一天的桃子数量(n==1,1个桃子)
3.(f(n-1)+1)*2=f(n)
#include<iostream>
using namespace std;
int fun(int n) {
if (n == 1) return 1;
return (fun(n-1)+1)*2;
}
int main() {
cout << fun(2) << endl;
system("pause");
return 0;
}