第47题——求1+2+3+…+n

160 阅读1分钟

题目:

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

思路:

不能使用上述这些关键字,考虑递归方法

Java

package nowcoder;

public class S47_Sum {
    public int sum(int n){
        //不能使用上述这些关键字,考虑递归方法
        int sum = n;
        boolean ans = (n > 0) && ((sum+=sum(n-1))>0);
        return sum;
    }
    public static void main(String[] args){
        S47_Sum s47 = new S47_Sum();
        System.out.println(s47.sum(10));
    }
}

结果:

55

Python

class Sum:
    def sum(self, n):
        tsum = n
        tmp = tsum and self.sum(n-1)
        tsum += tmp
        return tsum
if __name__ == '__main__':
    test = Sum()
    print(test.sum(10))