我有以下递归函数
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 并在递归结束时减少它。这样我就不知道什么时候出来了。
有没有人有任何想法?