C语言 计算一个数的阶乘两种方法

发布时间 2023-08-22 14:02:51作者: 江南王小帅

// ConsoleApplication15.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <stdio.h>
using namespace std;

long fact(int n);//使用循环方法
long rfact(int n);//使用递归方法

int main(void)
{
    int num;
    printf("This program calculates factorials\n");
    printf("Enter a value in the range 1-12 (q  to quit)\n");
    while (scanf_s("%d",&num)==1)
    {
        if (num < 0)
        {
            printf("No negative numbers,please.\n");
        }
        else if (num>12)
        {
            printf("Keep input under 13\n");
        }
        else
        {
            printf("loop:%d factorial =%ld\n", num, fact(num));
            printf("recuresion :%d factorial = %ld\n", num, rfact(num));
        }
        printf("Enter a value in tha range 1-12(q to quit)\n");    
    }
    printf("Bye\n");
    
    return 0;
}

long fact(int n) {
    long ans;
    for ( ans = 1; n > 1 ; n--)
    {
        ans *= n;
    }
    return ans;
}

long rfact(int n) {
    long ans;
    if (n > 0)
    {
        ans = n * rfact(n - 1);
    }
    else
    {
        ans = 1;
    }
    return ans;
}