-6

我目前正在开发一个程序,我需要保存最后使用的整数的值。

让我们考虑这种情况:

   for (int i = 1;i<=28123;i++){
        if (isAbundant(i)){
            if (i*2 <= 28123){
                sum2 += i*2;
            }
            if (i + [the previous value of i] <= 28123){
                sum2 += i + [the previous value of i];
            }
        }
    }

我将如何让previous value of i实际代表 的先前值i?我需要另存i为另一个变量吗?如果是这样的话,不i就变成了电流i吗?

如果您认识到问题集,则此问题来自:请不要评论问题本身。请直接回答问题。

4

2 回答 2

3

尽管提出问题的方式(礼貌不花钱),但在循环之外定义 int i :

int i=0;
for (i = 1;i<=28123;i++){
    if (isAbundant(i)){
        if (i*2 <= 28123){
            sum2 += i*2;
        }
        if (i + (i-1) <= 28123) { //your only ++ing i, so previous value is always i-1
            sum2 += i + (i-1);
        }
    }
}

//i is now accessable here
于 2013-03-17T20:33:38.360 回答
1

尝试这个。但是,您可能需要根据您的要求处理第一次迭代的特殊情况。

int pre = 0;
for (int i = 1; i <= 28123; i++) {
    if (isAbundant(i)) {
        if (i * 2 <= 28123) {
            sum2 += i * 2;
        }
        if (i + pre <= 28123) {
            sum2 += i + pre;
        }
    }
    pre = i;
}
于 2013-03-17T20:35:20.977 回答