剑指 Offer 64. 求1+2+…+n(面试题中的短路与)
题目:
求 1+2+…+n ,要求不能使用乘除法、for
、while
、if
、else
、switch
、case
等关键字及条件判断语句(A?B:C)
。
示例 1:
输入: n = 3
输出: 6
示例 2:
输入: n = 9
输出: 45
限制:
1 <= n <= 10000
题解:
不能用循环,那首先就应当考虑递归。
一般来说,在编写递归程序时,得用 if 来判断当前是否满足递归的结束条件,如果满足应当结束递归,并逐层返回。
但题目又不让用 if 。这里我们可以利用 && 的短路特性,来代替 if 做判断。
为了方便理解最后的代码,这里先给出包含 if 的递归代码:
class Solution {public int sumNums(int n) {if(n == 0) return 0;n += sumNums(n - 1);return n;}
}
&& 的短路特性
- A && B
- A 为 true,则返回表达式 B 的 bool 值
- A 为 false,则返回 false
下面就是使用 && 代替 if 的代码。
class Solution {public int sumNums(int n) {boolean flag = n > 0 && (n += sumNums(n - 1)) > 0;return n;}
}
剑指 Offer 64. 求1+2+…+n(面试题中的短路与)相关推荐
- LeetCode 剑指Offer 64.求1,2到n的和, 不使用循环/判断及乘除
题目 剑指 Offer 64. 求1+2+-+n 求 1+2+-+n ,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 示例 1: ...
- 【LeetCode】剑指 Offer 64. 求1+2+…+n
[LeetCode]剑指 Offer 64. 求1+2+-+n 文章目录 [LeetCode]剑指 Offer 64. 求1+2+-+n package offer;public class Solu ...
- 剑指Offer 64 求1+2+...+n
求1+2+...+n 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 1 # -*- coding:ut ...
- 【LeetCode笔记】剑指 Offer 64. 求1 + 2 + ... + n (Java、限制语法、二刷)
文章目录 题目描述 思路 && 代码 注释版代码(方便理解): 无注释版代码(方便背诵= =) 二刷 题目描述 鬼鬼,又到了我最喜欢的戴着脚镣跳舞环节. 讲道理,我觉得这类题应该整个归 ...
- 剑指offer 64.68Ⅰ.68Ⅱ. 搜索与回溯算法(中等)
64. 题目: 剑指 Offer 64. 求1+2+-+nhttps://leetcode-cn.com/problems/qiu-12n-lcof/ 想法:使用递归.但是终止递归需要if,能不能不用 ...
- 剑指offer之求两个数之和(不能使用四则运算)
1 题目 剑指offer之求两个数之和(不能使用四则运算) 2 代码实现 #include<stdio.h>int add(int num1, int num2) {int sum1;in ...
- 剑指Offer——当当+搜狐+好未来笔试题+知识点总结
剑指Offer--当当+搜狐+好未来笔试题+知识点总结 情景回想 时间:2016.9.21 15:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:当当笔试.搜狐笔试.好未来笔试 3 ...
- 剑指Offer——腾讯+360+搜狗校招笔试题+知识点总结
剑指Offer--腾讯+360+搜狗校招笔试题+知识点总结 9.11晚7:00,腾讯笔试.选择题与编程.设计题单独计时. 栈是不是顺序存储的线性结构啊? 首先弄明白两个概念:存储结构和逻辑结构. 数据 ...
- 剑指offer第2版Python题解(更新中)
O(n^2)排序 冒泡排序.插入排序与选择排序(Python)_NLP_victor的博客-CSDN博客 归并 归并排序(Python)_NLP_victor的博客-CSDN博客 快排 快速排序(Py ...
最新文章
- 【思维导图】脑机音乐接口,高效检测用户的情绪状态
- Google新作Synthesizer:我们还不够了解自注意力
- 用websploit获取管理员后台地址
- Unix 下的 vim 如何使用系统剪贴板
- 个盘子的汉诺塔需要移动几步_看漫画学C++039:递归解汉诺塔
- Android去掉listView,gridView等系统自带阴影
- linux shell 执行目录,bash shell脚本执行的几种方法
- SQL Server-聚焦IN VS EXISTS VS JOIN性能分析(十九)
- 【ACDU推荐好文】手把手教你 DBCA 搭建 Oracle ADG
- 【月报】Java知音的五月汇总
- matlab图片包微盘,如何用Matlab绘制二维图形资料下载
- Mac上Jupyter notebook代码补全
- 第35课 函数对象分析(函数操作符()重载)
- C# WinForm制作登录界面
- cacti监控linux和windows磁盘io,为CactiEZ(或者Cacti)增加监控磁盘IO功能
- umount target is busy
- 【linux学习笔记】began,每次玩这个都特别着迷
- 语言学特征进行可读性评估(Readability Assessment)
- 如何使用纯Servlet做一个单表的CRUD操作
- 不一样的SpringBoot注解