设n的初始值为正整数,设计一个递归算法如下: int fact (int n) { if (n<=0) return 1; else return (n*fact(n-1)); } 以下叙述中正确的是

设n的初始值为正整数,设计一个递归算法如下:
int fact (int n) {
if (n<=0) return 1;
else return (n*fact(n-1));
}
以下叙述中正确的是(    )。(2013年嵌式系统设计师下半年)
A.计算fact(n)需要执行n次函数调用

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

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


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

* 注意事项

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,转载需标明出处。
软考题网站(https://www.ruankaoti.com/)提供的相关试题资料仅供个人复习参考使用
如果您有更好的解答,欢迎留言评论。

本文链接:https://www.ruankaoti.com/post/3815.html

评论

阅读更多

微信扫码,加入打卡学习群,分享学习资料

最近发表

随机文章