描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
解题思路
不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C),因为题目划定了很多限定条件,那么就需要另辟蹊径
递归 时间复杂度O(n) ,空间复杂度O(n)
从1加到n使用递归算法
public static int Sum_Solution(int n) { if(n <= 0){ return n; } return Sum_Solution(n-1) +n; }
公式推演 时间复杂度O(n) ,空间复杂度O(1)
1+2+3+...+n平常的解题思路来说可以使用(n+1)*n/2来得出结论,但是限定不能使用乘除法,那么可以使用(n+ ) >>1来代替
public static int Sum_Solution(int n) { return (int)(Math.pow(n,2)+n) >> 1; }