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

Posted 小田mas

tags:

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

64. 求1+2+…+n

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

看到这个的一瞬间是很懵的,经过查找资料,嗯,明白了。

来自力扣题解K哥
常见的逻辑运算符有“短路效应”:

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

之所以采用这个是因为我们需要采用递归的思想解决这个问题,而递归又需要判断,所以我们可以采用相应的逻辑运算符来取而代之!

原递归思路:

public int sumNums(int n) 
    if(n == 1) return 1;
    n += sumNums(n - 1);
    return n;

对应本题:

class Solution 
    public int sumNums(int n) 
        boolean x = n > 1 && (n += sumNums(n - 1)) > 0;
        return n;
    

解释一下,”&&“即我们熟悉的与,需要符号左右两边两者都为真,该式才为真,所以对应这上面来说,当n>1时,递归式才能正常地运行下去,与原递归思路中n=1时直接返回一样。

以上是关于剑指 Offer 64. 求1+2+…+n的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer打卡64. 求1+2+…+n

剑指 Offer 64. 求1+2+…+n(递归+短路运算)

剑指 Offer 64. 求1+2+…+n(递归+短路运算)

LeetCode剑指 Offer 64. 求1+2+…+n(C++)

LeetCode剑指 Offer 64. 求1+2+…+n(C++)

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