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;
}