题目:

求 1+2+…+n ,要求不能使用乘除法、forwhileifelseswitchcase等关键字及条件判断语句(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(面试题中的短路与)相关推荐

  1. LeetCode 剑指Offer 64.求1,2到n的和, 不使用循环/判断及乘除

    题目 剑指 Offer 64. 求1+2+-+n 求 1+2+-+n ,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 示例 1: ...

  2. 【LeetCode】剑指 Offer 64. 求1+2+…+n

    [LeetCode]剑指 Offer 64. 求1+2+-+n 文章目录 [LeetCode]剑指 Offer 64. 求1+2+-+n package offer;public class Solu ...

  3. 剑指Offer 64 求1+2+...+n

    求1+2+...+n 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 1 # -*- coding:ut ...

  4. 【LeetCode笔记】剑指 Offer 64. 求1 + 2 + ... + n (Java、限制语法、二刷)

    文章目录 题目描述 思路 && 代码 注释版代码(方便理解): 无注释版代码(方便背诵= =) 二刷 题目描述 鬼鬼,又到了我最喜欢的戴着脚镣跳舞环节. 讲道理,我觉得这类题应该整个归 ...

  5. 剑指offer 64.68Ⅰ.68Ⅱ. 搜索与回溯算法(中等)

    64. 题目: 剑指 Offer 64. 求1+2+-+nhttps://leetcode-cn.com/problems/qiu-12n-lcof/ 想法:使用递归.但是终止递归需要if,能不能不用 ...

  6. 剑指offer之求两个数之和(不能使用四则运算)

    1 题目 剑指offer之求两个数之和(不能使用四则运算) 2 代码实现 #include<stdio.h>int add(int num1, int num2) {int sum1;in ...

  7. 剑指Offer——当当+搜狐+好未来笔试题+知识点总结

    剑指Offer--当当+搜狐+好未来笔试题+知识点总结 情景回想 时间:2016.9.21 15:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:当当笔试.搜狐笔试.好未来笔试 3 ...

  8. 剑指Offer——腾讯+360+搜狗校招笔试题+知识点总结

    剑指Offer--腾讯+360+搜狗校招笔试题+知识点总结 9.11晚7:00,腾讯笔试.选择题与编程.设计题单独计时. 栈是不是顺序存储的线性结构啊? 首先弄明白两个概念:存储结构和逻辑结构. 数据 ...

  9. 剑指offer第2版Python题解(更新中)

    O(n^2)排序 冒泡排序.插入排序与选择排序(Python)_NLP_victor的博客-CSDN博客 归并 归并排序(Python)_NLP_victor的博客-CSDN博客 快排 快速排序(Py ...

最新文章

  1. 【思维导图】脑机音乐接口,高效检测用户的情绪状态
  2. Google新作Synthesizer:我们还不够了解自注意力
  3. 用websploit获取管理员后台地址
  4. Unix 下的 vim 如何使用系统剪贴板
  5. 个盘子的汉诺塔需要移动几步_看漫画学C++039:递归解汉诺塔
  6. Android去掉listView,gridView等系统自带阴影
  7. linux shell 执行目录,bash shell脚本执行的几种方法
  8. SQL Server-聚焦IN VS EXISTS VS JOIN性能分析(十九)
  9. 【ACDU推荐好文】手把手教你 DBCA 搭建 Oracle ADG
  10. 【月报】Java知音的五月汇总
  11. matlab图片包微盘,如何用Matlab绘制二维图形资料下载
  12. Mac上Jupyter notebook代码补全
  13. 第35课 函数对象分析(函数操作符()重载)
  14. C# WinForm制作登录界面
  15. cacti监控linux和windows磁盘io,为CactiEZ(或者Cacti)增加监控磁盘IO功能
  16. umount target is busy
  17. 【linux学习笔记】began,每次玩这个都特别着迷
  18. 语言学特征进行可读性评估(Readability Assessment)
  19. 如何使用纯Servlet做一个单表的CRUD操作
  20. 不一样的SpringBoot注解

热门文章

  1. 基于SSM的作业调度平台-java作业调度平台
  2. 父组件和子组件同是使用 beforeDestroy 钩子 保存同一份数据
  3. Excel从右向左查找
  4. Apache mod_rewrite规则重写的标志一览
  5. 17.和优化相关的hint
  6. MyEclipse 8.5中文汉化教程,图文版【转】
  7. 基于 POI 封装 ExcelUtil 精简的 Excel 导入导出
  8. 25个创新的仪表板(管理面板)设计示例
  9. Android ConnectivityManager详解
  10. php array 插值,PHP中的关联数组的插值(双引号字符串)