搜索
写经验 领红包
 > 情感

彻底理解递归(如何理解递归算法)

导语:编程|理解递归关键在于理解递归表达式和代码的执行顺序

彻底理解递归(如何理解递归算法)

递归表达式用于描述每一次递归之间的相互关系及递归函数参数的收敛。递归由参数的变化形成反复调用,直到递归的边界条件,然后回归。

递归代码的执行顺序可区分整体顺序与递归函数内部的代码顺序。

整体顺序根据递归调用自己的次数区分,如果只调用自己一次,称为线性递归,如计算阶算。如果有调用自己两次,称为树型递归,如计算斐波那契数列。

递归函数内部的代码顺序以递归调用自己的语句为基准,递推调用时,顺序执行此语句前面的语句,回归时,顺序执行此语句后面的语句,如十进制数输出为二进制显示:

include <iostream>using namespace std;int fib(int n);int main(){ int i =fib(5);cout<<i<<endl; cin.get(); return 0;}int fib(int n){ cout << "n=" << n << " ";if(n==1 || n==2)return 1;  else{int i = fib(n-1);cout<< "i=" << i<<endl;int j = fib(n-2);cout<< "j=" << j <<endl;return i+j;}}

输出:

n=6 n=5 n=4 n=3 n=2 i=1n=1 j=1i=2n=2 j=1i=3n=3 n=2 i=1n=1 j=1j=2i=5n=4 n=3 n=2 i=1n=1 j=1i=2n=2 j=1j=38

递归函数内部局部的代码顺序以递归调用自己的语句为基准,递推调用时,顺序执行此语句前面的语句:

-End-

本文内容由小德整理编辑!