递归的概念与例子
递归就是一个函数自己内部调用自己,同时具有一定的边界条件和边界值。
即,递归的两个要素:边界条件和递推公式。
递归可以有若干层,每一层有若干种情况。
递归可以理解为对所有层的每一种情况进行遍历。
一般格式:
int f(...){//边界条件(返回上一层)if(...) return...;//递推公式(在本层进行多种情况的选择,依次在各种情况下进入下一层)f(...);}
例子:
递归求斐波那契数列:
已知边界条件:n[1]=1,n[2]=2,且递推公式:n[i]=n[i-1]+n[i-2](i>2),则求斐波那契数列的代码为:
#include<iostream>using namespace std;int f(int i){if (i == 1 || i == 2)//边界条件return i;return f(i - 1) + f(i - 2);//递推公式}int main(){int n;cin >> n;cout << f(n) << endl;return 0;}
任何递归都可以转换为一个搜索树,整个递归的过程为对树的先序遍历。
