內的幾秒鐘後,將下面的程序輸出拋出異常匿名遞歸函數
過程由於終止StackOverflowException
代替我的消息。爲什麼?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Numerics;
namespace maximumVariable
{
class Program
{
public static BigInteger Factorial(int num)
{
try
{
return (num > 1) ? num*Factorial(num - 1) : (1);
}
catch
{
throw;
}
}
static void Main(string[] args)
{
BigInteger kingKong=0;
int facParameter=0;
try
{
while (true)
{
kingKong = Factorial(facParameter);
facParameter++;
}
}
catch
{
Console.WriteLine("The maximum value " + kingKong.ToString()+"has been achieved after "+facParameter.ToString()+" iterations");
}
}
}
}
附註:在「Factorial」中捕捉和重擲的點是什麼? (忽略你無法捕獲StackOverflowException的事實) – 2012-07-27 20:15:55
[C#捕獲堆棧溢出異常]的可能重複(http://stackoverflow.com/questions/1599219/c-sharp-catch-a-stack-overflow-exception ) – 2012-07-27 20:16:58
@BrianRasmussen此源代碼應該不言自明;我想檢查BigInteger可以包含的最大因子。 – 0x6B6F77616C74 2012-07-27 20:23:40