递归有三个很重要的步骤:
-
定义函数功能
-
寻找递归终止条件
-
递推函数的等价关系式
掌握这三点基本上就没问题了。
首先定义函数功能很简单,一般都是题目中给出来的,
其次,寻找递归终止条件,这个需要根据实际问题来判断,最后根据问题推导出递推函数的等价关系式
通过几个简单的实例来说明吧,首先是斐波那契数列的计算:
函数功能: fib(n)=fib(n-1)+fib(n-2) n>=3
fib(n)=1 n<3
递归终止条件:n<3的时候终止递归
等价关系式:fib(n)=fib(n-1)+fib(n-2)
代码:
int fib(int n){ if(n<3) return 1; return fib(n-1)+fib(n-2); }
接下来说一下阶乘运算:
函数功能:阶乘,即乘法运算
递归终止条件:n=1的时候,终止递归
等价关系式:jiecheng(n)=n * jiecheng(n-1)
代码:
int jiecheng(int n){ if(n==1) return 1; return n*jiecheng(n-1); }