首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C#遞歸算法計算階乘:以10!為例的完整實現

     編輯:關於C語言

階乘計算的遞歸實現

階乘(Factorial)是經典遞歸案例。n! = n × (n-1)!,終止條件為1! = 1。以下為完整控制台程序:

using System;

namespace ExFactorial
{
    class Factorial
    {
        public double Calculate(int num)
        {
            return num <= 1 ? 1 : num * Calculate(num - 1);
        }
        
        static void Main(string[] args)
        {
            Console.Write("請輸入一個非負整數:");
            if (int.TryParse(Console.ReadLine(), out int num) && num >= 0)
            {
                var f = new Factorial();
                Console.WriteLine($"{num}! = {f.Calculate(num)}");
            }
            else
            {
                Console.WriteLine("輸入無效,請輸入非負整數。");
            }
        }
    }
}

關鍵優化說明

  • 輸入驗證:使用int.TryParse避免異常,檢查非負條件。
  • 遞歸終止條件:num <= 1涵蓋0!與1!(均為1)。
  • 返回類型:採用double延緩溢出,大數場景建議BigInteger。
  • 棧溢出風險:極大數值會導致StackOverflowException,工程中大階乘宜用迭代或BigInteger。

迭代版本對比

public long FactorialIterative(int n)
{
    long result = 1;
    for (int i = 2; i <= n; i++) result *= i;
    return result;
}

迭代版無棧溢出風險,性能略優,適合生產環境。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved