我目前正在开发一个程序,我需要保存上次使用的整数的值。
让我们考虑一下这种情况:
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
?
如果您发现问题集,则此问题来自:请不要对问题本身发表评论。请直接回答这个问题。
答案 0 :(得分: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
答案 1 :(得分: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;
}