階乘(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;
}
迭代版無棧溢出風險,性能略優,適合生產環境。