我正在解决欧拉计划第5题。我没有谷歌搜索,因为那通常会导致一个有答案的 Stack Overflow 页面出现。所以,这就是我的解决方案:
private int Euler5(int dividend, int divisor)
{
if (divisor < 21)
{
// if it equals zero, move to the next divisor
if (dividend % divisor == 0)
{
divisor++;
return Euler5(dividend, divisor);
}
else
{
dividend++;
return Euler5(dividend, 1); // move to the dividend
}
}
// oh hey, the divisor is above 20, so what's the dividend
return dividend;
}
在我的理解中,这是有道理的。然而,VS2012给出了一个StackOverFlowException异常提示,建议我确保我没有进入无限循环或使用递归。我的问题是,为什么这是一个无限循环?我有一种感觉,我完全忽略了某些愚蠢的事情。
编辑:
由于人们似乎还在发布答案,我要重申一下,我没有使用Google,因为我害怕会找到答案。我不想知道问题的答案,我只想知道为什么会出现异常。