剑指 Offer.64-求1+2+...+n
剑指 Offer.64-求1+2+…+n
题目链接
问题描述
求
1+2+...+n
,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
个人想法(递归 + 逻辑运算)
题目条件限定不能使用所有关键字及乘数法,限制了直接遍历
,等差数列求和公式
,直接递归
等方式,推测此题需要使用逻辑运算及递归解决
逻辑运算符的短路效应
高级程序设计语言中,存在三种逻辑运算符,分别是&&,||,!;其中&&与||存在短路效应,如下所示
1 | if(A && B) // 当A为false时,B的判断不会执行,即发生短路,直接判断A&&B为false |
在本题中,需要通过n==1
来控制递归结束,可通过短路效应进行实现
1 | n > 1 && sumNums(n-1) //当n = 1是条件为false,发生短路效应,终止递归 |
官方解法
代码
1 | class Solution { |