递归的概念与例子

递归就是一个函数自己内部调用自己,同时具有一定的边界条件和边界值。
即,递归的两个要素:边界条件和递推公式
递归可以有若干层,每一层有若干种情况
递归可以理解为对所有层的每一种情况进行遍历。
一般格式:

  1. int f(...)
  2. {
  3. //边界条件(返回上一层)
  4. if(...) return...;
  5. //递推公式(在本层进行多种情况的选择,依次在各种情况下进入下一层)
  6. f(...);
  7. }

例子:
递归求斐波那契数列:
已知边界条件:n[1]=1,n[2]=2,且递推公式:n[i]=n[i-1]+n[i-2](i>2),则求斐波那契数列的代码为:

  1. #include<iostream>
  2. using namespace std;
  3. int f(int i)
  4. {
  5. if (i == 1 || i == 2)//边界条件
  6. return i;
  7. return f(i - 1) + f(i - 2);//递推公式
  8. }
  9. int main()
  10. {
  11. int n;
  12. cin >> n;
  13. cout << f(n) << endl;
  14. return 0;
  15. }

任何递归都可以转换为一个搜索树,整个递归的过程为对树的先序遍历