问题是找到一个数字,该数字的总和是10的倍数,给定n为数字位数,t为测试用例。 这段代码中出现了细分错误。
using namespace std;
void print(int start, int end, int sum)
{
if (start == end) {
return;
}
while (start != 0) {
sum = sum + start % 10;
start = start / 10;
}
if (sum % 10 == 0) {
cout << start << endl;
return;
}
else {
print(start + 1, end, 0);
}
}
int main()
{
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
int start = pow(10, n - 1);
int end = pow(10, n);
print(start, end, 0);
}
}
答案 0 :(得分:0)
问题在于,在您递归调用print(start + 1, end, 0);
时,start
变量为零而不是原始值。我想这会导致堆栈溢出。
没有充分的理由在这里使用递归(至少不是在像C ++这样的语言中)。用循环替换递归,不要忘记使用临时变量来进行数字总和计算,而不是浪费start
的值。