横颜君秦时明月剧情歌:C高手说一下吧。

来源:百度文库 编辑:高考问答 时间:2024/04/19 20:03:24
关于函数的递归调用问题,谁可以解释一下?

我来说吧,递归就是函数调用自己本身.
比如,很多书讲递归时都会用到这样一个例子.求一个数的阶乘 n!,为什么,因为阶乘本身就是一个很符合阶乘的概念n!=n*(n-1)!.
int Jie(int x)
{
if (x == 1)
return 1;
else
return x * Jie(x - 1);
}
但不是所有的问题都可以用递归的,一般有几个条件,有结束条件,数据之间有递推关系或是方法有递推关系.
树的遍历,经常用递归.

可以这样来理解递归:
1. 递归包含很多相同的步骤(或解决方法、途径);
2. 相邻的递归步骤可以通过一个简单的操作来表示差异。

像汉诺塔的问题,就是将A的n个东西通过B挪到C
A -> B -> C
中间用到的步骤是这样的,先将A上的n-1个东西通过C挪到B,然后将A上的1个东西直接挪到C,然后再通过A将B上的n-1个东西挪到C。

看出门道了吗?
开始第一步后,后面的步骤其实是一摸一样的,直到挪完为止。
这就是递归,你只需要知道第一步是如何做的就可以了,以后的就是一样的步骤了。

自己调用自己
An=F[A(n-1)]
F为一个函数,直到n等于1

就是函数自己调用自己.