列表

详情


设n的初始值为正整数,设计一个递归算法如下:

以下叙述中正确的是(  )。

A. 计算fact(n)需要执行n次函数调用

B. 计算fact(n)需要执行n+1次函数调用

C. 计算fact(n)需要执行n+2次函数调用

D. 计算fact(n)需要执行n-1次函数调用

参考答案: B

详细解析:

递归法是描述算法的一种强有力的方法,其思想是:将N=n时不能直接求解的问题,设法递归(压栈)转化为求n-l,n-2,…的问题,一直到N=0或1的初始情况,由于初始情况的解可以给出或方便得到,因此,开始层层退栈得到N=2,3,…,n时的解,直到得到最终结果。
本题中,主程序调用fact(n)称为外部调用,其他调用称为内部调用,直到调用fact(0)为止。fact(n)调用fact(n-l),fact(n-l)调用fac(n-2),…,fact(l)调用fact(0),内部调用n次,外部调用一次,共n+1次。

上一题