题目:求1+2+…+n,要求不能使用乘除法,for while,if,else,switch,case等关键字及条件判断语句
思路:
借助&&的短路功能,对于 A && B,有如下规则
- 若A = true,则执行B
- 若A = false,则不执行B
- 如果n=0时,则不会再进行递归调用
package jianZhiOffer;
/*
* 面试题64:求1+2+...+n
* 题目:求1+2+...+n,要求不能使用乘除法,for while,if,else,switch,case等关键字及条件判断语句
*/
public class Demo64 {
public static void main(String[] args) {
int result = sum(3);
System.out.println(result);
}
public static int sum(int n) {
int sum=n;
boolean isContinue = (n>0) && ((sum+=sum(n-1))>0);
return sum;
}
}
思路:库函数
Sum = n(n+1)/2
//公式法
public static int Sum_Solution2(int n) {
int sum = (int)(Math.pow(n, 2)+n);
return sum>>1;
}