Stackoverflow 异常 - 多重计算
Stackoverflow exception - multiple calculation
所以我正在解决 Project Euler 中的一个问题,我必须找到某个数字的最小倍数。
目前它是起始数字 10 的工作代码但是 当我输入 20 时,我得到一个 Whosebug 异常。我似乎无法弄清楚我做错了什么。
public class MultipleCalculator
{
public static int StartingNumber { get; } = 0;
private int MultipleCypher = 20;
public bool MultipleFound = false;
public MultipleCalculator(int multipleCypher)
{
}
public int FindSmallestMultiple()
{
return FindMultiple(MultipleCypher);
}
private int FindMultiple(int startingNumberOfSequence)
{
while (!MultipleFound)
{
var isMultiple = IsMultiple(startingNumberOfSequence);
if (isMultiple)
{
MultipleFound = true;
return startingNumberOfSequence;
}
startingNumberOfSequence += MultipleCypher;
return FindMultiple(startingNumberOfSequence);
}
return -1;
}
private bool IsMultiple(int startingNumberOfSequence)
{
var dividableNumber = MultipleCypher - 1;
while (dividableNumber > 0)
{
if ((startingNumberOfSequence % dividableNumber) == 0)
dividableNumber--;
else
return false;
}
return true;
}
}
非常欢迎任何帮助。
我猜你会得到 Whosebug 异常,因为你正在递归调用你的函数。
重构您的代码以删除递归。
所以我正在解决 Project Euler 中的一个问题,我必须找到某个数字的最小倍数。
目前它是起始数字 10 的工作代码但是 当我输入 20 时,我得到一个 Whosebug 异常。我似乎无法弄清楚我做错了什么。
public class MultipleCalculator
{
public static int StartingNumber { get; } = 0;
private int MultipleCypher = 20;
public bool MultipleFound = false;
public MultipleCalculator(int multipleCypher)
{
}
public int FindSmallestMultiple()
{
return FindMultiple(MultipleCypher);
}
private int FindMultiple(int startingNumberOfSequence)
{
while (!MultipleFound)
{
var isMultiple = IsMultiple(startingNumberOfSequence);
if (isMultiple)
{
MultipleFound = true;
return startingNumberOfSequence;
}
startingNumberOfSequence += MultipleCypher;
return FindMultiple(startingNumberOfSequence);
}
return -1;
}
private bool IsMultiple(int startingNumberOfSequence)
{
var dividableNumber = MultipleCypher - 1;
while (dividableNumber > 0)
{
if ((startingNumberOfSequence % dividableNumber) == 0)
dividableNumber--;
else
return false;
}
return true;
}
}
非常欢迎任何帮助。
我猜你会得到 Whosebug 异常,因为你正在递归调用你的函数。
重构您的代码以删除递归。