题目描述

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

思路

1.此问题可以使用递归思想求解,当加到0时,停止递归即可。
2.既然不可以使用流程控制的关键字,我们可以使用&&的短路操作来代替流程控制。

Java代码实现

class Solution {
    public int sumNums(int n) {
        int res = 0;
        boolean flag = (n != 0) && ((res = n + sumNums(n-1))>0);
        return res;
    }
}

Golang代码实现

func sumNums(n int) int {
    var fun func(res *int,n int) bool
    fun = func(res *int,n int) bool {
        *res = *res + n;
        return (n!=0)&&(fun(res,n-1))
    }
    res := 0
    fun(&res,n)
    return res
}