【剑指OFFER】64. 求1+2+…+n
发布日期:2021-06-29 19:47:19 浏览次数:2 分类:技术文章

本文共 602 字,大约阅读时间需要 2 分钟。

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

示例 1:

输入: n = 3

输出: 6
示例 2:

输入: n = 9

输出: 45

限制:

1 <= n <= 10000

答案:

class Solution {
public int sumNums(int n) {
/*以逻辑运算符 && 为例,对于 A && B 这个表达式,如果 A 表达式返回 False ,那么 A && B 已经确定为 False ,此时不会去执行表达式 B。同理,对于逻辑运算符 ||, 对于 A || B 这个表达式,如果 A 表达式返回 True ,那么 A || B 已经确定为True ,此时不会去执行表达式 B。利用这一特性,我们可以将判断是否为递归的出口看作 A && B 表达式中的 A 部分,递归的主体函数看作 B 部分。如果不是递归出口,则返回 True,并继续执行表达式 B 的部分,否则递归结束。当然,你也可以用逻辑运算符 || 给出类似的实现,这里我们只提供结合逻辑运算符 && 的递归实现。*/ boolean flag = n > 0 && (n += sumNums(n - 1)) > 0; return n; }}

转载地址:https://darkness.blog.csdn.net/article/details/115677949 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【力扣】28. 实现 strStr()
下一篇:【力扣】239. 滑动窗口最大值

发表评论

最新留言

不错!
[***.144.177.141]2024年04月17日 05时03分32秒