【Java】面试题64:求1+2+...+n

题目:求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;
	}

猜你喜欢

转载自blog.csdn.net/weixin_38361153/article/details/89211065