设n的初值为正整数,设计一个递归算法如下:int fact(int n){if(

admin2022-08-02  55

问题 设n的初值为正整数,设计一个递归算法如下:int fact(int n){if(n<=0)return 1;else return(n*fact(n-1));}以下叙述中,正确的是______。A.计算fact(n)需要执行n+2次函数调用B.计算fact(n)需要执行n+1次函数调用C.计算fact(n)需要执行n次函数调用D.计算fact(n)需要执行n-1次函数调用

选项 A.计算fact(n)需要执行n+2次函数调用
B.计算fact(n)需要执行n+1次函数调用
C.计算fact(n)需要执行n次函数调用
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://tihaiku.com/congyezige/2424401.html

最新回复(0)