【发布时间】:2012-02-20 02:06:30
【问题描述】:
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;
}
每隔几次运行它都会正常工作,但是我会尝试再次编译并运行它,它会给我这个错误:
System.StackOverflowException 未处理 mscorlib.dll 中出现“System.StackOverflowException”类型的未处理异常 {无法计算表达式,因为当前线程处于堆栈溢出状态。}
而且,是的,我知道有一种更简单的方法可以做到这一点,但是我将值设置为等于 14 到 146 之间的随机数的方法,同时还确保它是 15 的倍数,应该仍然有效尽管如此。
我也很困惑为什么它有时只会给我错误消息。
那么它有什么问题呢?为什么它被标记为无限递归,即使它没有无限的东西?
【问题讨论】:
-
所以有时和随机不点击你?如果在堆栈空间用完之前没有出现可被 15 整除的数字怎么办?
-
等等?为什么该代码的其余部分被删除了?
标签: c# random recursion stack-overflow