background image

if (I>0) res=factorial(I-1)*i; else res=1; 
return res; 

3、如何考虑用 PHP 递归算法来解决问题
例:求 s=1+2+3+4+5+6+……+n 本来这个问题我们过去常用循环累加的方法。而这
里如要用递归的方法,必须考虑两点:
1  

) 能否把问题转化成递归形式的描述;

2  

) 是否有递归结束的边界条件。

显然递归的两个条件都有了:
1  

) s(n) =s(n-1)+n 

2  

) s(1)=1 

所以源程序为:
int progression(int n){ 
int res; 
if (n=1 )res=1 else res=progression(n-1)+n; 
return res; 

4、递归的应用
中序遍历二叉树
void inorder (BinTree T){ 
if (T){ 
inorder(T->lchild); 
printf(“%c”,T->data); 
inorder(T->rchild);