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 @   0.2  阅读(423)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示