Jiwu Bu

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  32 随笔 :: 0 文章 :: 25 评论 :: 0 Trackbacks
N的阶乘,通过数组的方式计算N的阶乘,防止由于计算结果太大导致溢出!

1
 #include  <iostream>
 2 using namespace std;
 3 
 4 void Function(int n)
 5 {
 6     int Length =n*(n+1)/2;
 7 
 8     int *result =new int[Length];
 9     memset(result,0,Length);
10 
11     result[0]=1;    
12     int   number_count =1;    
13     int   number_carry =0;  
14     int   number_temp = 0
15 
16     for(int i= 1; i<=n; i++)    
17     {    
18         for(int j=0;j<number_count; j++)      
19         {    
20             number_temp  =result[j]*+ number_carry;      
21             result[j]   = number_temp % 10;      
22             number_carry   = (int)(number_temp/10);    
23         }    
24         while(number_carry)      
25         {            
26             result[number_count]   =(number_carry % 10);  
27             number_carry = (int)(number_carry / 10);  
28             number_count++;  
29         }  
30     }    
31 
32     for(int i=number_count-1; i>=0;--i)      
33     {      
34         cout<<result[i];  
35     }    
36 
37     cout<<endl;
38     delete[] result;
39 }
40 
41 int   main()  
42 {    
43     unsigned int n;
44     while(cin>>n&&n!=0)
45     {
46         Function(n);  
47     }
48 
49     return 0;
50 }

N的阶乘


posted on 2009-01-09 20:33 bujiwu 阅读(1788) 评论(0)  编辑 收藏 引用 所属分类: C++算法与数据结构

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理