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