递归算法的是怎么回事?

来源:百度知道 编辑:UC知道 时间:2024/05/12 20:48:38
感觉好难啊.帮我讲一下思考过程

和迭代差不多,只是通过定义和调用函数来实现迭代
把事情分解成相同的步骤重复执行直到符合某一条件时结束,再反过来递推到最初的状态,问题就解决了

比如定义(用的是C语言)
int fun(int a)
{
if(a==1) return 1;
else
{
a=a*fun(a-1);
return a;
}
}
在fun里面再定义fun,这个fun都只做一件事,把a的内容和fun(a-1)相乘作为返回值
这里要有个终止条件,即a=1时返回值为1,这样,如果我给最初的fun里的a赋值为5,第一步为5*fun(4),而执行fun(4)的结果为4*fun(3)....直到fun(2)=2*fun(1)即fun(2)=2*1,再把fun(2)代回去,得fun(3)=3*2*1,最后倒推的结果为fun(5)=5*4*3*2*1,即这个递归函数实现了a的阶乘fun(a)=a!

够详细了吧,觉得好的话给我加分吧 ^_^

http://baike.baidu.com/view/96473.htm