首页 > 其他 > 详细

6.2——面试题64. 求1+2+…+n

时间:2020-06-02 13:28:33      阅读:34      评论:0      收藏:0      [点我收藏+]

面试题64. 求1+2+…+n

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

 

1.解题思路

正整数累加,常规方法很简单。但是这里要求了不能使用乘除法、for,while(迭代)、if,else,switch,case,A?B:C(递归)。

但是这道题很容易想到:res = n + sunNums(n - 1) ,如果 n = 1 终止递归。那么难点就来了,怎么样才能不使用 if n == 1 来判断是否跳出

逻辑符的短路效应

if(A && B):若 A 为false,则 B 的判断不会执行(即短路),直接判定 A && B 为 false
if(A || B): 若 A 为 true ,则 B 的判断不会执行(即短路),直接判定 A || B 为 true

根据短路效应,对于如果 n = 1 终止递归可以应用短路效应,即 n > 1 and self.sumNums(n - 1) 也就是当 n = 1 时,不会执行 self.sumNums(n - 1) 终止递归

n > 1 and self.sumNums(n - 1) ==> if n > 1:
                    self.sumNums(n - 1)

 

2.源码

技术分享图片

6.2——面试题64. 求1+2+…+n

原文:https://www.cnblogs.com/xiaoqichaoren/p/13030343.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!