1.1.17

1.1.17 #

解答 #

书中已经给出了解释。

递归时结束条件必须放在递归语句的前面,否则会不断展开而无法结束。

代码 #

Console.WriteLine($"{ExR2(6)}"); // 抛出 StackOverflow Exception

static string ExR2(int n)
{
    var s = ExR2(n - 3) + n + ExR2(n - 2) + n; // 运行到 ExR2 即展开,不会再运行下一句
    if (n <= 0)
    {
        return "";
    }

    return s;
}