我有以下的遞歸函數C#
public int Factorial(int number_to_calculate)
{
if (StackChanged != null)
{
StackChanged(new CustomEventArgs(StackValue, Result));
}
System.Threading.Thread.Sleep(wait_time);
if (number_to_calculate == 0)
{
StackValue--;
return 1;
}
else
{
StackValue++;
Result = (number_to_calculate * Factorial(number_to_calculate - 1));
}
if (StackChanged != null)
{
StackChanged(new CustomEventArgs(StackValue, Result));
}
StackValue--;
System.Threading.Thread.Sleep(wait_time);
return Result;
}
顯然,我的上司是不正常和我有2個回報,但要功能是遞歸的。所以我只需要一個回報。我已經試過用goto開始的累加器,以便只有一個返回,但是我需要每次函數調用自己時遞增StackValue,並在遞歸出現時遞減。這樣我就不知道它何時出來。
有沒有人有任何想法?
這聽起來像有嚴格的編碼標準,這不是一件壞事。然而我的猜測是,如果你的主管不喜歡多個出口點,那麼'goto'也不會飛。 – OnResolve 2012-07-31 12:39:28
是的,請不要使用goto's * ever *。另外,Result的定義在哪裏? – 2012-07-31 12:40:06
@OnResolve:即使「沒有嚴格的編碼標準」,也應該避免跳轉。正如傑拉德所說。 – 2012-07-31 12:41:06