美文网首页
剑指 Offer 64. 求1+2+…+n

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

作者: bangbang2 | 来源:发表于2020-07-12 08:54 被阅读0次
    image.png

    补点课外知识:
    && ”,“或 ||∣∣ ”,“非 !! ”都有短路效应,如下所示,直接看代码

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

    在本题中不让用while循环,可以用&&运算符来代替
    如果n==1时,下边的递归就结束不进行下去,下边等式的结果是布尔类型的变量

    n > 1 && sumNums(n - 1) 
    

    具体流程
    递归就是先下去调用,然后回溯,返回结果
    一旦n==1,结束递归,res=res+1,将res向上返回,res=res+2,再向上返回res=res+3


    image.png

    代码如下所示
    因为&&的运算结果是Boolean类型的,所以递归时加一个sumNums(n - 1) > 0,保证这个是布尔类型的
    同时用辅助变量x来接收运算后的结果

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

    相关文章

      网友评论

          本文标题:剑指 Offer 64. 求1+2+…+n

          本文链接:https://www.haomeiwen.com/subject/qfcgcktx.html