为什么此IF语句无法在循环内打印

时间:2019-12-06 22:22:39

标签: c++ loops if-statement

能否请我帮忙理解为什么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);
         }
     }
    }

1 个答案:

答案 0 :(得分:1)

即使代码中没有任何错误,您也只能打印出以下内容:

allPerfects(a, b);

如果有连续的整数aa + 1,...,a + n总计为a + n + 1 < b

这仅适用于:

1 + 2 == 3

0 + 1 + 2 == 3

因此a必须为01,并且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);
     }
 }