其实简单的说递归算法只要遵循两个元作为就可以了。
(1)必须要有出口。
(2)执行时要往出口方向。
例1:求N!。
使用递归算法可以很简洁,如下:
long fact(int i){
if(i == 1){ return 1;}
else{ return i*fact(i-1); }
}
例2:设一维数组A的元素A[k1]~A[k2]中存放着整数,用递归方法求出他们中的最大值。
分析:若k1=k2,即数组中只有1个元素,则A[k1]就是最大元素;若k1<k2,则用类似的方法先求出A[k1+1]~A[k2]中的最大值m,然后让m与A[k1]进行比较,二者中最大值即为所求的值。
代码如下:
int maxint(int A[k1], int k1, int k2){
if(k1 == k2){ return A[k1];}
else{ m = maxint(A, k1+1, k2); return (A[k1] > m) ? A[k1] : m;}
}