public int S1x;
public void Execute()
{
Random random = new Random();
S1x = random.Next(14, 146);
if (S1x % 15 != 0)
Fix(S1x);
}
public int Fix(int SX)
{
Random randomG = new Random();
SX = randomG.Next(14, 146);
if (SX % 15 != 0)
Fix(SX); // This is the recursion
return SX;
}
Run Code Online (Sandbox Code Playgroud)
每次运行它都会正常工作,但之后我会尝试再次编译并运行它会给我这个错误:
System.StackOverflowException未处理mscorlib.dll中发生未处理的类型"System.StackOverflowException"异常{无法计算表达式,因为当前线程处于堆栈溢出状态.}
并且,是的,我知道有一种更简单的方法可以做到这一点,但是我的方法是将值设置为等于14到146之间的随机数,同时还要确保它是15的倍数,但仍然可以工作.
我真的很困惑为什么它有时只给我错误信息.
那有什么不对呢?为什么它被标记为无限递归,即使它没有任何无限的东西?