1+2+3+....+n

 

本质是:等差数列求和公式

sn=n*(a1+an)/2;(本题中sn=n*(1+n)/2)
因为不能用到乘法,先展开进行变形sn=(n+n*n)/2----->sn=(n+n^2)/2;
除2可以用右移一位实现
乘法可以用pow实现
public class Solution {
public int Sum_Solution(int n) {
int s = (int) (Math.pow(n,2) + n);
return s>>1;
}
}

 递归:

class Solution {
    public int sumNums(int n) {
    if(n==1) return 1;
    return sumNums(n-1)+n;
    }
}

  

posted @ 2019-07-24 10:17  浅滩浅  阅读(705)  评论(0编辑  收藏  举报