黑马程序员技术交流社区

标题: 求1+2+…+n, 要求不能使用乘除法、for、while、if、else等 [打印本页]

作者: maxwell247    时间: 2015-10-28 21:42
标题: 求1+2+…+n, 要求不能使用乘除法、for、while、if、else等
/**
* 题目:求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句(A?B:C)
*
*/
/**
* 首先想到的是用递归,但是递归的出口在哪里? 出口一半都是if()之类的语句,java中&&和||运算符就有类似于if的作用.
* &&和||运算符有短路的效果,这里很巧妙的作为了递归结束的条件,不得不佩服写出这个代码的高手!
* 以下解法来自于互联网,仅供参考.
*/

public class Demo {
        public static void main(String[] args) {
                System.out.println(add_1(100));
                System.out.println(add_2(100));
        }

        // 解法1:
        public static int add_1(int n) {
                int sum = n;
                boolean b = (n > 0) && (sum += add_1(n - 1)) > 0;
                return sum;
        }

        // 解法2:
        public static int add_2(int n) {
                int sum = n;
                boolean b = (n == 0) || (sum += add_2(n - 1)) > 0;
                return sum;
        }
}
/**
* 输出结果:
* 5050
* 5050
*/


作者: 熊金磊    时间: 2015-10-28 21:45
不错!又学了点东西




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2