/**
* 面试题64:求1+2+3+...+n
* 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
* @author
* @create 2021-04-13 19:55
*/
public class Solution64 {
public static void main(String[] args) {
int i = sumN(10);
System.out.println(i);
}
/**
* 方法一:公式求值
* @param n
* @return
*/
public static int sumSolution(int n) {
int res = (int)Math.pow(n,2) + n;
return res>>1;
}
/**
* 方法二:短路求值
* 使用&&,表示两边都为真,才为真,左边为假,右边就没用了。
* 因此在不断递归时,直到左边为假时,才不执行右边。因此在第一次进行右边的判断时,就进入递归的调用。
* @param n
* @return
*/
public static int sumN(int n) {
int sum = n;
boolean flag = (n>0) && (sum += sumN(n-1))>0;//左边n>0作为递归停止的条件
return sum;
}
// public static int sumN(int n){
// if (n == 1){
// return 1;
// }
// return sumN(n-1) + n;
// }
}
【剑指Offer】面试题64:求1+2+...+n
最新推荐文章于 2022-03-25 20:56:10 发布