剑指 Offer -------- 求1+2+…+n

在这里插入图片描述

题目链接!

思路:
这道题有很多种做法,有一种奇葩的做法就是下面代码中注释的那种,通过申请一个数组来计算即可。

知识点:

常见的逻辑运算符有三种,即 “与 && ”,“或 || ”,“非 ! ” ;而其有重要的短路效应,如下所示:

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

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

然后我们想想跟简单的if语句是不是可以替换呢?
我用&&的短路效应来代替if语句的作用,是不是可以的?当我A&&B时,通过前面A的真假性来控制递归的层次即可。

代码:

class Solution {
    
    
public:
    // int sumNums(int n) {
    
    
    //     bool a[n][n+1];
    //     return sizeof(a)>>1;
    // }
    
    //ans=1+2+3+...+n
	//   =(1+n)*n/2
	//   =sizeof(bool a[n][n+1])/2
	//   =sizeof(a)>>1


    int sumNums(int n){
    
    
        bool x = n>1 && sumNums(n-1)>0;
        res+=n;
        return res;
    }

private:
    int res = 0;
};

猜你喜欢

转载自blog.csdn.net/weixin_43743711/article/details/115277039
今日推荐