使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。 (1)fun1(int n)求出n的阶乘,必须使用递归调用。 (2)fun2(int n)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。 注意:

admin2019-04-18  31

问题 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。
    (1)fun1(int n)求出n的阶乘,必须使用递归调用。
    (2)fun2(int n)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。
    注意:不能修改函数的其他部分。
    试题程序:
#include
//必须使用递归
int funl(int n)
{
}
//不能使用递归
int fun2(int n)
{
}
void main()
{
int i;
cout<<"请输入一个整数:"<cin>>i;
cout<<"输入数字的阶乘是:"<cout<<"输入数字的阶乘是:"<return;
}

选项

答案//必须使用递归 int funl(int n) { if(n<=0) return 0; if(n==1) return 1; return n*funl(n-1); }; //不能使用递归 int fun2(int n) { if(n<===0) return 0; int res=1: for(int i=1;i(=n;i++) { res*=i: } return res; }

解析 本题考查的是递归函数和阶乘算法。递归的阶乘算法可以通过判断传入参数,如果大于1,则返回n*fun1(n-1),意思是返回n乘以n-1的阶乘;如果等于1,则返回1。这样递归下去就能最终得出n的阶乘。非递归算法可以先建立一个累乘变量,并初始化为1,然后循环遍历1~n,将遍历的数累乘到变量中即可。
转载请注明原文地址:https://kaotiyun.com/show/uZAp777K
0

最新回复(0)