【剑指offer】面试题64:求1+2+......+n

来源:互联网 发布:软件测试性能测试 编辑:程序博客网 时间:2024/06/15 14:02

题目

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

思路

看下面的注释

代码

/** * 思路: * 与 n 有关,又有题目那些限制,我们首先想到用数组解决。 * 将数的累加放到构造函数中。 * 不过因为数组不用for无法直接初始化,所以这个方法是错误的。 *  * 解法: * 用&&做截断 *  * @author peige */public class _64_Accumulate {    public static int Sum_Solution(int n) {        int sum = 0;        boolean b = (n > 0) && ((sum += Sum_Solution(n - 1) + n) > 0);        return sum;    }}

测试

public class _64_Test {    public static void main(String[] args) {        test1();        test2();    }    private static void test1() {        int res = _64_Accumulate.Sum_Solution(5);        MyTest.equal(res, 15);        res = _64_Accumulate.Sum_Solution(10);        MyTest.equal(res, 55);    }    private static void test2() {        int res = _64_Accumulate.Sum_Solution(1);        MyTest.equal(res, 1);    }}
阅读全文
0 0