求1+2+…+n
2020-03-05 本文已影响0人
youzhihua
题目描述
求 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
}