阶加算法代码
#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++)
   if(a[j]>9)
   {
    a[j+1]+=a[j]/10;
    a[j] %=10;
   }
  while(a[l]==0) l--;
 }
 for(i=l; i>=0; i--) 
  printf("%d", a[i]);
 printf("\n");
}
看了 楼下两个 用int 存储 50!
感觉有点不可思议, 至少应该用double啊,用double虽然不能保证精度,但至少可以很接近结果。
3楼的 一句话:“老师说过,可以自已定义一个类型来表示更大的数。。。”
自己是可以定义,你可以定义任意类型。只不过需要你自己来实现。 50!这种问题 就相当于 大数 的操作。
网上可以下载到大树类, 支持 大数的+ - * / 开平方, 开根号,(几乎所有math里的函数)...。
B. 1到100的阶乘代码
给你100!
#include<stdlib.h>
#include<iostream.h>
#include<iomanip.h>
const int N=100; 
int compute(unsigned int *s,int n)//s用来存储一次的计算结果,n为本次计算的乘数,函数返回结果中有效数据的节数
{
    unsigned long p;  //暂时存放一节的结果
 unsigned long more=0;//一次乘法的进位
 int i;  //循环变量
 static int m=1;//存放结果中的节数,三位一节
 static int q=0;//存放结果中最后为零的节数
 //计算本次的结果
    for(i=q;i<m;i++)
 {
  p=(long)s[i]*(long)n+more;
  more=p/N;
  s[i]=p-more*N;
 }
 //计算结果中最后为零的节数
 while(s[q]==0) 
  q++;
 //处理最高位
 for(more=p/N;more;)
 {
  p=more;
  more=p/N;
  s[i++]=p-more*N;
  m++;    //有效节数增一
 }
 return m;  //返回有效节数
}
void main()
{
 unsigned int *s; //存放结果
 int i;           //循环变量
 int m;    //存放节数
 int n;           //求n的阶乘
 cout<<"请输入一个正整数<0----100>:";
 cin>>n;
 if(n<0) 
 {
  cout<<"输入数据错误!"<<endl;
  return;
 }
 else if(n==0)
 {
  cout<<"0!==1"<<endl;
  return;
 }
 //初始化s
 s=(unsigned int *)malloc(n*sizeof(s)*10);
    for(i=1;i<n;i++) s[i]=0;
 s[0]=1;
 //计算结果
 for(i=2;i<=n;i++) 
  m=compute(s,i);
 while(s[m]==0) 
  m--;//过滤掉前面的零
 //输出结果
 cout<<n<<"!=="<<s[m--];//最高一节
    
 int num=1;
 for(i=m;i>=0;i--) 
 {   
  num++;
  cout<<','<<setw(3)<<setfill('0')<<s[i];
     if((num%10)==0) cout<<endl;
 }
 cout<<endl;
 //释放空间
 free(s);
}
JAVA的函数是一样的.可惜JAVA的编码我不会写了.
C. 阶乘的公式是什么
n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

资料来源:阶乘_网络
D. 阶乘的程序和算法
没说要什么语言编写的,我给你一个Java的:
public class Factorial
 {    public static int factorial(int x)
       {  
          if (x < 0) 
          {
            throw new IllegalArgumentException("x must be>=0");       
          } 
          int fact = 1;
          for(int i = 2; i <= x; i++) 
             { 
                 fact *= i; 
             }        
           return fact; 
     }  
  public static void main(String args[]) 
 {  
   System.out.print(factorial(10));    
 }
}
E. python中n的阶乘的算法
我的代码是
#encoding=utf-8
s=1
n=int(input("请输入一个整数n:"))
for i in range(1,n+1):
s=s*i
print(n,"!=",s)
结果:
python3 a.py 
请输入一个整数n:5
5 != 120
F. 阶乘的公式是怎样的
程序源代码: 
/** 
*计算大数的阶乘,算法的主要思想就是将计算结果的每一位用数组的一位来表示:如要计算5!,那么首先将 
*(1) a[0]=1,然后a[0]=a[0]*2,a[0]=2, 
*(2) a[0]=a[0]*3,a[0]=6 
*(3) a[0]=a[0]*4,a[0]=24,此时a[1]=2,a[0]=4 
*/ 
public class Factorial 
{ 
static int a[] = new int [10000]; 
static void factorial(int n) 
{ 
for(int i=2; i< a.length; i++) 
a[i] = 0; //将数组元素初始化 
a[0] = 1; //用数组的一项存放计算结果的位数 
a[1] = 1; //将第一项赋值为一 
for(int j= 2; j <= n; j++) 
{ 
int i=1; 
int c = 0; //c表示向高位的进位 
for(; i <= a[0]; i++) 
{ 
a[i] = a[i] * j + c;//将来自低位的计算结果和本位的结果相加 
c = a[i] / 10; 
a[i] = a[i] % 10; 
} 
for(; c != 0; i++) 
{ 
a[i] = c%10; 
c = c / 10; 
} 
a[0] = i - 1;
G. c语言的求n的阶乘的程序代码
int f(int n)
{
     if(n==1)
          return 1;
     else
          return n*f(n-1);
}
这个是经典的迭代程序例子。
H. 求解:图论中常见的最短路径算法有几种都是什么
主要是有三种、、
第一种是最直接的贪心dijkstra算法、、可以利用堆数据结构进行优化、、缺点就是不能求有负权的最短路与判断负环、、
第二种是bellman-ford算法、、根据松弛操作的性质是可以来判断负环的、、时间复杂度是O(nm)的、、
第三种是SPFA算法、、把他单独拿出来作为一种算法并不是非常好的、、他的实质应该是上面的bellman-ford算法的队列优化时间复杂度更低、O(KE)、K的值约等于2、、
