C语言——使用循环和递归计算阶乘

使用循环和递归计算阶乘:

/*使用循环和递归计算阶乘*/
#include<stdio.h>
double fact(int num);//函数声明,阶乘函数,用于循环时调用
double rfact(int num);//函数声明,阶乘函数,用于递归时调用
int main(void)
{
    int num;
    printf("——————计算阶乘——————\n");
    printf("请输入一个整数(输入q退出):");
    while (scanf("%d",&num)) //如果输出为整数,则执行while语句
    {
        if (num<0)
        {
            printf("输入有误!");
        }
        else
        {
            printf("循环语句计算的%d!=%lf\n",num,fact(num));//调用阶乘函数,循环计算
            printf("递归计算的%d!=%lf\n",num,rfact(num));//调用阶乘函数,递归计算
        }
        printf("请输入一个整数(输入q退出):");
    }
    printf("程序退出");
    return 0;
}
double fact(int num)
{
    double result=1;//存储计算结果
    int i;
    if (num==0)
    {
        result=1;//0的阶乘为1
    }
    else
    {
        //循环计算阶乘
        for (i=1; i<=num; i++)
        {
            result*=i;
        }
    }
    return result;
}
double rfact(int num)
{
    double result=1;//存储计算结果
    if (num==0)
    {
        result=1;//0的阶乘为1
    }
    else
    {
        result=num*rfact(num-1);//递归计算
    }
    return result;
}

计算结果:

——————计算阶乘——————
请输入一个整数(输入q退出):5
循环语句计算的5!=120.000000
递归计算的5!=120.000000
请输入一个整数(输入q退出):10
循环语句计算的10!=3628800.000000
递归计算的10!=3628800.000000
请输入一个整数(输入q退出):q
程序退出

 

 

 

 
posted @ 2022-01-29 16:49  0.2  阅读(344)  评论(0编辑  收藏  举报