相关疑难解决方法(0)

运行时异常,递归太深

我转换的伪代码这里到C#,并让它递归地重复10000次.但是我StackOverflow Exception经历了一次C#运行时错误9217.我怎么能阻止这个?

编辑如果它对任何人有帮助,这里是代码:

    private double CalculatePi(int maxRecursion)
    {
        return 2 * CalculatePi(maxRecursion, 1);
    }

    private double CalculatePi(int maxRecursion, int i)
    {
        if (i >= maxRecursion)
            return 1;
        return 1 + i / (2.0 * i + 1) * CalculatePi(maxRecursion, i + 1);
    }

    double pi = CalculatePi(10000); // 10,000 recursions
Run Code Online (Sandbox Code Playgroud)

EDIT2所以每个人似乎都同意我需要将其转换为迭代...任何人都可以提供一些代码吗?我似乎无法编写任何有效的迭代代码......

编辑感谢Paul Rieck的这个答案,我测试了它,它的工作原理如下:

    private static double CalculatePi(int maxRecursion)
    {
        double result = 1;
        for (int i = maxRecursion; i >= 1; …
Run Code Online (Sandbox Code Playgroud)

c# recursion exception

8
推荐指数
2
解决办法
4675
查看次数

标签 统计

c# ×1

exception ×1

recursion ×1