//此方法循环次数会比遍历到n的循环次数少2倍;提高效率。
//当然,此方法并不是最优解,还有更高效的算法。
//n值比较小的话,看不出太大差别。这里就不列举了。
int sum(int n)
{
// 1. 最好限定用户输入n的最大值,防止result可能溢出。
// 2. 还要进行n < 1的异常情况判断,这里就不加了。
// 3. result必定是正整数,建议变量定义和函数返回值使用unsigned int类型
int i, remain, num;
int result = 3; //排除1和2,从3开始循环。1+2=3
remain = n%3; //输入数据是否有余数。0、1、2
num = n - remain; //最大可整除的数
if(remain == 1) //如果余数为1,则n本身不能被整除
result += n;
else if(remain == 2) //余数为2,n本身与n-1 皆不能被整除
result += n*2 - 1;
for(i = 3; i != num; i+=3)
result += i * 2 + 3; // result = result + (i + 1) + (i + 2);
return result;
}
sum(int n,int result) int sum (int n) {for(int i;i<n:i++){if(n%3==0) result+=i;} return result } 可以传个参数一个循环数量一个,结果,然后返回结果,或者定义在sum里面返回也行
int sum = 0;
for(int i=1;i<=n++){
if(i%3==0){
continue;
}
sum+=i;
}
return sum;
int sum(int n) {
int i,s=0;
for (i=1;i<=n;i++) {
if (i%3 != 0) s+=i;
}
return s;
}
循环:
int sum(int n) {
int ans=0;
for(int i=1;i<=n;i++)
if(i%3==0)
ans+=1;
return ans;
}
递推:
int sum(int n) {
if(n==1) return 1;
if(n%3==0) return sum(n-1);
else return sum(n-1)+n;
}