求1+3+5+7+9+…,其和小于等于500 的最大项
今天看书上这道题有点不懂为什么要i-2
于是我算简单的<=10
1+3+5等于9,再加7就超过了10,应该最大项是5。但是按照书上的代码这里运行结果是7。
接着我再分析书上的45是最大项吗?
发现应该是43是最大项,并不是45。
然后我改成最后输出i-4
或者能不能别的方法?询问了AI,发现可以这样:
#include <stdio.h>
int main() {
int sum = 0;
int current = 1; // 当前奇数项
// 关键逻辑:检查加入下一项后是否仍满足条件
while (sum + current <= 500) {
sum += current; // 累加当前项
current += 2; // 生成下一个奇数项
}
// 循环结束时,current已指向导致越界的下一项
printf("最大项为:%d\n", current - 2);
return 0;
}
这样先检查加入下一项后是否仍满足条件,满足就累加,然后当前项再加2。