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

admin2015-05-30  32

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成以下两个函数:
    (1)funl(int n);求出n的阶乘,必须使用递归调用。
    (2)fun2(int n);求出n的阶乘,不能使用递归调用。
    如果11小于1则返回0。
    注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
    1    #include
    2  //必须使用递归
    3    int funl(int n)
    4    {
    5
    6    };
    7  //不能使用递归
    8    int fun2(int n)
    9    {
    10
    11  }
    12  void main()
    13  {
    14    int i ;
    15    cout<<”请输入一个整数:”<    16    cin>>i ;
    17    cout<<“输入数字的阶乘是:”<< funl(i)<    18    cout<<"输入数字的阶乘是:"<< fun2(i)<    19    return;
    20   }

选项

答案1 int funl(int n)//使用递归计算阶乘 2 { 3 if(n<=0) //n小于等于0,直接返回0 4 retUrn 0 ; 5 if(n==1) //n等于1直接返回1 6 return 1; 7 return n*fLlnl(n一1);//n大于等于1,通过递归计算n 1 8 }; 9 //不使用递归计算阶乘 10 int fun2(int n) 11 { 12 if(n<=0) //n小于0,直接返回0 13 return 0; 14 int res=1 ; //初始化阶乘存放变量res 15 for(int i=1 ; i<=n;i++) //通过循环计算n ! 16 { 17 res*=i ; 18 } 19 return res; 20 }

解析 (1)该程序功能是对阶乘的实现。其中,阶乘的计算公式定义为:
   
    公式分为参数n是1和大于1的两种情况,例如:1的阶乘1 !=1;5的阶乘5 !=5×4×3×2×1。
    [解题思路]
    (1)进入fun1函数,根据前面的定义,它对阶乘算法的实现可以分为三种情况,一是当n小于或等于O时,返回0即可;二是当n大于1时应该用什么程序来实现阶乘的计算;三是当n=1时,函数直接返回1即可。
    (2)计算n!的值,先定义一个放阶乘值的变量res,初值为1,通过循环的方法,用累乘器“res*=i;”实现n!。
转载请注明原文地址:https://jikaoti.com/ti/KnE0FFFM
0

最新回复(0)