C语言中如何编程计算阶乘

Python071

C语言中如何编程计算阶乘,第1张

常见的有两种:

递归版本:

int Fac(int n){

    if(n==0) return 1

    return n*Fac(n-1)

}

还有一种是循环版:

int ans=1

    for(int i=1i<=ni++) ans*=i

测试方法:

#include<stdio.h>

int Fac(int n){

    if(n==0) return 1

    return n*Fac(n-1)

}

int main(){

    int n

    while(scanf("%d",&n)!=EOF){

        int ans=1

        for(int i=1i<=ni++) ans*=i

        printf("%d %d\n",ans,Fac(n))

    }

    return 0

}

有个值得注意的地方:阶乘时,数增大的很快,在n达到13时就会超过int的范围,此时可以用long long或是 __int64来存储更高精度的值,如果还想存储更高位的,需要用数组来模拟大数相乘。

方法如下:

/*This program can calculate the factorial of (int n).*/

#include <stdio.h>

int factorial(int n)

{

return (n == 1)?n:factorial(n-1)*n//recursion.

}

int main(void)

{

int n,fac

printf("Please input the value of n:")//initialize n.

scanf("%d",&n)

fac = factorial(n)//variable fac is not necessary.

printf("The result is:%d\n",fac)     

return 0

}

相关内容:

阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能,如 0.5!,0.65!,0.777!都是错误的。但是,有时候我们会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘。

#include

"stdio.h"

main()

{

int

n,i

double

p=1//这里用的是Double,不用Int,因为Int范围太小

printf("请输入一个数字:")

scanf("%d",&n)

for(i=2i<=ni++)

p*=i

printf("n!shu=%lf\n",p)

}

扩展资料:

用Ruby求 365 的阶乘。

def AskFactorial(num) factorial=1

step(num,1){|i| factorial*=i}

return factorial end factorial=AskFactorial(365)

puts factorial

阶乘有关公式

该公式常用来计算与阶乘有关的各种极限。

此为斯特林公式的简化公式。

参考资料来源:百度百科-阶乘