用c语言编写50的阶乘的算法

来源:百度知道 编辑:UC知道 时间:2024/05/17 20:38:53

算法很简单,就用一个递归就可以了,实现函数如下:
//求n的阶乘的函数
int fun(int n)
{
if(0==n || 1==n) return 1;
else return n*fun(n-1);
}

这里涉及到数据类型范围的问题,用int型最多只能表示13的阶乖。再多一个就会超出范围了。记得老师说过,可以自已定义一个类型来表示更大的数。。。等我再研究研究。
这里写了个用int型的测试代码,一块放上来:

//用c语言编写50的阶乘的算法

#include "stdio.h"
#include "windows.h"

//求n的阶乘的函数
int fun(int n)
{
if(0==n || 1==n) return 1;
else return n*fun(n-1);
}

void main()
{
int i;
int a;
for(i=1;i<=15;i++)
{
a = fun(i);
printf("%d %d\n",i,a);
Sleep(100);
}
}

#include<stdio.h>
#define N 50 /*可以是任意一个数的阶乘,当然要计算机能够存的下*/

int main()
{
int a[100], l=0, i, j;
for(i=0; i<100; i++)
a[i]=0;
a[0]=1;

for(i=2; i<=N; i++)
{
for(j=0; j<=l; j++)
a[j] *= i;
l+=3;
for(j=0; j<l; j++)