找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 234|回复: 0

一维数组用于阶乘

[复制链接]

210

主题

371

回帖

0

积分

管理员

积分
0
发表于 2013-8-15 08:53:09 | 显示全部楼层 |阅读模式
我们求阶乘时,一般都是用一个int来存储结果的。而当数值较大时,我们就不能这样做了。现在我们可以用数组来存储结果,具体的做法就是将得到的结果分离,比如说4!=24,我们的做法是将24分离为2和4,然后分别用数组的两个元素来存储,然后到了5!的时候,我们的做法就是将5分别和之前4!的两个数组元素来做乘积(5*2   5*4),然后在对每个数组元素中大于10的结果进行分离,具体的程序如下,有兴趣的同学可以参考一下:
#include"stdio.h"
#define MAX 100
void main()
{
int Data[MAX];
int Digit;
int i,j,r,k;
int N;
for(i=1;i<=MAX;i++)
  Data=0;
Data[0]=1;
Data[1]=1;
Digit=1;
printf("Enter a number what you want to calculus:");
scanf("%d",&N);
for(i=1;i<N+1;i++)
{
  for(j=1;j<Digit+1;j++)
   Data[j]*=i;
  for(j=1;j<Digit+1;j++)
  {
   if(Data[j]>10)
    {
     for(r=1;r<Digit+1;r++)
     {
      if(Data[Digit]>10)
        Digit++;
       Data[r+1]+=Data[r]/10;
       Data[r]=Data[r]%10;
     }
    }
  }
  printf("%d!= ",i);
  for(k=Digit;k>0;k--)
   printf("%d",Data[k]);
  printf("\n");
}
}
这里的数组元素为100,如果想计算更大的数值的阶乘,可以将MAX变得更大一点。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-1 05:54 , Processed in 0.145590 second(s), 20 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表