C#:递归方法期间的堆栈溢出异常

问题描述

我有一个递归方法,每当随机生成的数字不等于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 (将#修改为@)