问题描述
我有一个递归方法,每当随机生成的数字不等于1时,该方法便会自行调用。 我正在尝试测试不同事物的几率,例如Minecraft中的神奇宝贝(1/8192)或12眼种子(10 ^ 12),即使我了解堆栈溢出的原因,我也不知道如何解决。使用“线程”会使速度降低很多(不使用线程时每秒可进行5000次计算,使用线程时大约为500次)。
这是代码:
static void shiny()
{
total = 0;
counter += 1;
resetcounter += 1;
if (rdm.Next(8192) + 1 == 1)
{
Console.WriteLine("SHINY !! In: " + counter + " resets.");
}
else
{
if (resetcounter > 7000)
{
Console.WriteLine("Reset. Current: " + counter);
ThreadStart newtask = new ThreadStart(shiny);
Thread task = new Thread(newtask);
task.Start();
}
else
{
Console.WriteLine("Reset. Current: " + counter);
shiny();
}
}
}
我使用resetcounter变量来避免堆栈溢出错误,因为它发生在7k“复位”周围,然后它启动了一个新线程。 我很想了解测试赔率如何可以避免堆栈溢出!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)