求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
输入: n = 9 输出: 45
个人认为这道题通用性太低了,不能用循环,想求这么多数的和一定要使用递归,不能用if判断循环的终止条件,就用短路与&&的短路效应,即&&的前面条件不成立,就会直接终止后面的递归
Java 中,为构成语句,需加一个辅助布尔量 xx ,否则会报错;
Java 中,开启递归函数需改写为 sumNums(n - 1) > 0 ,此整体作为一个布尔量输出,否则会报错;
class Solution {
int res = 0;
public int sumNums(int n) {
boolean x = n>1 && sumNums(n-1)>0;
res += n;
return res;
}
}
用python实现起来比较易读
class Solution:
def __init__(self):
self.res = 0
def sumNums(self, n: int) -> int:
n > 1 and self.sumNums(n - 1)
self.res += n
return self.res



