【发布时间】:2020-04-28 17:26:25
【问题描述】:
我正在尝试解决 Project Euler 的 problem 5,即:
2520 是可以除以 1 到 10 的每个数字而没有任何余数的最小数字。能被 1 到 20 的所有数整除的最小正数是多少?
我的程序符合要求,但是当我执行它时,它会显示以下消息:
分段错误:11
void integerDivision(int num)
{
int i = 0;
int smallestNumber = 0;
int remainder = 0;
int numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 15, 16, 17, 18, 19, 20};
for(int j = i; j < 20; j++)
{
remainder = num % numbers[j];
if (remainder == 0)
{
continue;
}
else
{
i = 0;
integerDivision(num + 1);
}
}
smallestNumber = num / numbers[i];
cout << smallestNumber << endl;
}
int main(void)
{
integerDivision(1);
return 0;
}
【问题讨论】:
-
如果
num是否定的,这在很多方面都会出错。 -
可能是由于递归过多导致堆栈溢出。使用调试器检查退出条件。
标签: c++ arrays segmentation-fault