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

xiaoxiao2021-02-28  85

题目

求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); } }
转载请注明原文地址: https://www.6miu.com/read-41535.html

最新回复(0)