能否请我帮忙理解为什么If语句未执行。感谢您的时间。
void allPerfects (int a, int b){
int minVal = minN(a, b);
int maxVal = maxN(a, b);
int sum =0;
vector<int> v;
while (minVal < maxVal){
v.push_back(minVal);
minVal++;
}
for (int i = 0; i < v.size() ;i++){
for (int j = 0; j < i; j++){
sum += v[j];
}
if (sum == v[i]){
printInt(v[i], false); printStr(" is a perfect number!", true);
}
}
}
答案 0 :(得分:1)
即使代码中没有任何错误,您也只能打印出以下内容:
allPerfects(a, b);
如果有连续的整数a
,a + 1
,...,a + n
总计为a + n + 1 < b
。
这仅适用于:
1 + 2 == 3
和
0 + 1 + 2 == 3
因此a
必须为0
或1
,并且b
必须大于或等于4
。
编辑:但这只会在您重置sum
时发生:
for (int i = 0; i < v.size() ;i++){
sum = 0; // This line is missing.
for (int j = 0; j < i; j++){
sum += v[j];
}
if (sum == v[i]){
printInt(v[i], false); printStr(" is a perfect number!", true);
}
}