当前位置: 代码迷 >> C语言 >> (有兴趣者请帮)求任意数的阶乘
  详细解决方案

(有兴趣者请帮)求任意数的阶乘

热度:152   发布时间:2008-01-11 21:29:29.0
(有兴趣者请帮)求任意数的阶乘
各位:
    下面这道程序我打算用来求1000000的阶乘的,但是现在调试到350左右的阶乘时就报错了。为什么?求帮忙调试一下,谢谢!

/*求百万以内数的阶乘*/
#define N 350  //N为所求阶乘的数
#include<stdio.h>
void main()
{
    long int i;        //乘数,从2至N
    int j;            //数组下标
    long int k;        //进位数
    int a[750];        //保存每次相乘的结果
        k=0;
        a[0]=1;
        for(i=2;i<=N;i++)
        {
            j=0;            
            a[j]=a[j]*i+k;
            k=a[j]/10;
            a[j]%=10;
l1:            if((k<=0)&&(a[j+1]<0))
            {
                continue;
            }
            else if((k>0)&&(a[j+1]<0))
            {
                j++;
                a[j]=k;
                k=a[j]/10;
                a[j]%=10;
                goto l1;
            }
            else if((k>=0)&&(a[j+1]>=0))
            {
                j++;
                a[j]=a[j]*i+k;
                k=a[j]/10;
                a[j]%=10;
                goto l1;
            }            
        }
        for(;j>=0;j--)
        {
            printf("%d",a[j]);
        }
        printf("\n\n\n");
}
搜索更多相关的解决方案: 阶乘  兴趣  

----------------解决方案--------------------------------------------------------
100万的估计要算很长时间,那么大了已经没有意义了(除非练习算法)
我曾经编过一个可以计算到10万的,分析看楼主程序的原因可能出在数组定义过小(我没全读程序,只看了看数组下标定义,因为350!有740多位,如果再大就越界了)
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

坚持到底
2008-01-11 14:42:07
gxl1127

等 级:新手上路
帖 子:44
专家分:0
注 册:2007-6-12
  得分:0 
谢谢各位
谢谢版主,谢谢各位指点!
----------------解决方案--------------------------------------------------------
现在都不怎么用goto了,以前学弹片机的时候学过跳转.如果用goto会让程序缺少可读性
----------------解决方案--------------------------------------------------------
你定义N的时候已经定义N是350了呀
----------------解决方案--------------------------------------------------------
  相关解决方案