主题:求1000以内任意数的阶乘
			 qiang106
				 [专家分:0]  发布于 2006-04-10 22:27:00
 qiang106
				 [专家分:0]  发布于 2006-04-10 22:27:00							
			这道题可以说是非常经典的一题了,我也知道要用数组来完成这一个程序,但有些东西还是想不清楚,请知道的兄弟给我讲讲!
						
					 
		
			
回复列表 (共7个回复)
		
								
				沙发
				
					 啥都不会 [专家分:320]  发布于 2006-04-26 18:57:00
啥都不会 [专家分:320]  发布于 2006-04-26 18:57:00				
				参见我blog的文章:   阶乘的算法
http://sniper167.bokee.com
							 
						
				板凳
				
					 jiangfeng [专家分:110]  发布于 2006-05-12 19:53:00
jiangfeng [专家分:110]  发布于 2006-05-12 19:53:00				
				
用什么语言实现呀
							 
						
				3 楼
				
					 zhpmy [专家分:70]  发布于 2006-05-14 00:34:00
zhpmy [专家分:70]  发布于 2006-05-14 00:34:00				
				也不知道兄弟是哪方面想不清楚,我就依我的想法编了个程给兄弟参考,下面的很简单,相信可以搞懂的:
#include<stdio.h>
void main()
{
    int n;  
    double f(int a),fact;  //声明函数f(),定义变量fact用于存放f()返回的值。
    printf("输入要求的数:\n");
    scanf("%d",&n);
    fact=f(n);
    printf("%d的阶乘为%.0f!\n",n,fact);
}
double f(int a)            //函数调用
{
    if(a==1)
        return(1);
    else
        return a*f(a-1);
}
							 
						
				4 楼
				
					 boxertony [专家分:23030]  发布于 2006-05-19 14:41:00
boxertony [专家分:23030]  发布于 2006-05-19 14:41:00				
				[quote]也不知道兄弟是哪方面想不清楚,我就依我的想法编了个程给兄弟参考,下面的很简单,相信可以搞懂的:
#include<stdio.h>
void main()
{
    int n;  
    double f(int a),fact;  //声明函数f(),定义变量fact用于存放f()返回的值。
    printf("输入要求的数:\n");
    scanf("%d",&n);
    fact=f(n);
    printf("%d的阶乘为%.0f!\n",n,fact);
}
double f(int a)            //函数调用
{
    if(a==1)
        return(1);
    else
        return a*f(a-1);
}[/quote]
是你没有看清出楼主的题目。1000!不是你的程序可以算出来的
							 
						
				5 楼
				
					 liangbch [专家分:1270]  发布于 2007-04-28 17:21:00
liangbch [专家分:1270]  发布于 2007-04-28 17:21:00				
				可以看看这个网站( blog.csdn.net/liangbch), 内有大数阶乘的最详尽的算法讨论和代码。
							 
						
				6 楼
				
					 longxiujiang [专家分:60]  发布于 2007-05-01 08:12:00
longxiujiang [专家分:60]  发布于 2007-05-01 08:12:00				
				#include "iostream.h"
void main()
{
   int n,i,m=0,x;
   cin>>n;
ff:x=1;
   for(i=1;i<=1000;i++)
       x=x*i;
       m=m+x;
       if(n>1)
       {
           n--;
           goto ff;
       }
   cout<<m<<endl;
}
							 
						
				7 楼
				
					 jay---yu [专家分:60]  发布于 2007-05-11 21:15:00
jay---yu [专家分:60]  发布于 2007-05-11 21:15:00				
				
这是转载一个高手写的……
**********************************************************************************************************
#include <stdio.h>
int main(void)
{
    int Data[10000];
    int digit;
    int i,j,r,k;
    int N;
    
    for(i=1;i<10000+1;i++)
       Data[i]=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]>9)
                        digit++;
                    Data[r+1]+=Data[r]/10;
                    Data[r]=Data[r]%10;
                }
            }
        }
    }
    printf("%d!=",N);
    for(k=digit;k>0;k--)
        printf("%d",Data[k]);
    return 0;
}
							 
									
			
我来回复