小言_互联网的博客

(Java 剑指offer)求1+2+3+...+n

335人阅读  评论(0)

一、题目解析

求1+2+3+…+n,
要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)

本题有很多限制条件,如果不用这些限制条件,可以想到肯定会用到递归运算,然后需要考虑递归终止条件,不能使用判断语句,可以考虑逻辑与的短路特性实现递归终止

二、题目代码

/**
 * @Auther: Yolo
 * @Date: 2020/9/5 16:08
 * @Description:
 */
public class Test_05 {
   
    public static void main(String[] args) {
   
        //1,2,3,4,5,6
        int n = 6;
        int result = Sum_Solution(n);
        System.out.println(result);
    }

    private static int Sum_Solution(int n) {
   
        int ans = n;
        //利用逻辑与的短路特性实现递归终止:当n==0时,只执行前面的判断为false,直接返回0;当n>0时,执行递归计算
        boolean stop = (ans != 0) && ((ans += Sum_Solution(n - 1)) != 0);
        return ans;
    }
}

三、总结

本题关键在于对逻辑与&&短路特性的了解


转载:https://blog.csdn.net/nanhuaibeian/article/details/108424370
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场