C#递归实现:阶乘算法

 

 

//求n的阶乘

        
private static int CalJieCheng(int n)
        {
            
if (n < 0)
            {
                
throw new Exception("请示输入正整数!");
            }
            
if (n < 2)
            {
                
return 1;
            }
            
else if (n > 16)
            {
                
string text = string.Format("结果超出int32的范围:{0},无法显示!",int.MaxValue.ToString());
                
throw new Exception(text);
            }
            
else
            {
                
return n * Run(n - 1);
            }

        }

        
private static int Run(int m)
        {
            
if (m == 1)
            {
                
return 1;
            }
            
return m * Run(m - 1);
        }

        
static void Main(string[] args)
        {
            
while (true)
            {
                Console.WriteLine(
"请输入正整数:");
                
string s = Console.ReadLine();
                
int n = int.Parse(s);
                
int reslut = CalJieCheng(n);
                Console.WriteLine(s 
+ "的阶乘是:" + reslut.ToString());
            }
        }

 

 

posted on 2008-08-02 10:12  王丹小筑  阅读(1901)  评论(0)    收藏  举报

导航