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

Posted xiaoqichaoren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.2——面试题64. 求1+2+…+n相关的知识,希望对你有一定的参考价值。

面试题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的主要内容,如果未能解决你的问题,请参考以下文章

面试题64:求1+2+3+.........+n

剑指OFFER----面试题64. 求1+2+…+n

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

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

[LeetCode]面试题64. 求1+2+…+n

[LeetCode]面试题64. 求1+2+…+n