本文共 813 字,大约阅读时间需要 2 分钟。
为了求解1+2+…+n的和,而不使用循环、条件判断等关键字,我们可以采用递归的方式,并通过递归深度来控制递归的终止。具体来说,我们定义一个递归函数,传递当前的n值和递归深度(即剩余的次数),每次递归调用时,递减n和递归深度,直到递归深度为0,此时返回当前的n值。通过这种方法,我们可以避免使用条件判断,而是利用递归深度来控制计算过程。
求1+2+…+n的和,要求不能使用乘除法、for、while、if、else、switch等关键字及条件判断语句。
示例 1:
输入: n = 3
输出: 6 示例 2:输入: n = 9
输出: 45限制:
1 ≤ n ≤ 10000
class Solution: def sumNums(self, n: int) -> int: def helper(n: int, times: int) -> int: if times == 0: return n return helper(n - 1, times - 1) + n return helper(n, n)
定义内部递归函数:helper(n, times)用于计算从1到n的和。其中,times表示递归的剩余次数。
递归终止条件:当times为0时,返回当前的n值,因为此时已经完成了递归的所有步骤。
递归调用:每次递归调用时,递减n和递归深度(即times减1),并将当前的n值加到结果中。
主函数调用:sumNums(n)调用helper(n, n),并返回结果。
这种方法通过递归深度来控制计算过程,避免了使用条件判断语句,满足了题目的所有限制条件。
转载地址:http://suwjz.baihongyu.com/