递归的基本概念
- 一个函数调用其自身,就是递归
- 求n!的阶乘
int Factorial(int n) {if(n==0) return 1;return n*Factorial(n-1); }
#include <iostream> using namespace std; int n; int Factorial(int n) {if(n==0) return 1;return n*Factorial(n-1); }int main(){cin>>n;cout<<Factorial( n)<<endl; return 0; }
递归和普通函数调用一样是通过栈实现的
f(5)=5xf(4)↓ | <- f(5) | <- f(5)=5x24=120 |
f(4)=4x f(3)↓ | f(4)=4x6=24↑ | |
f(3)=3x f(2)↓ | f(3)=3x2=6↑ | |
f(2)=2x f(1)↓ | f(2)=2x1=2↑ | |
f(1)=1x f(0) -> | f(0)=1 -> | f(1)=1x1=1↑ |
递归的作用
- 替代多重循环
- 解决本来就是用递归形式定义的问题
- 将解决分解为规模更小的子问题进行求解
......