剣はオファーを指します--------シーク1+ 2 +…+ n

ここに画像の説明を挿入

トピックリンク!

アイデア:
この質問を行う方法はたくさんありますが、奇妙な方法の1つは、以下のコードでコメントされている種類です。これは、配列を適用することで計算できます。

知識のポイント:

3つの一般的な論理演算子、つまり「and &&」、「or ||」、「not!」があり、以下に示すように、これらには重要な短絡効果があります。

  1. if(A && B)// Aが偽の場合、Bの判定は実行されず(短絡)、A && Bは直接偽と判定されます。

  2. if(A || B)// Aが真の場合、Bの判定は実行されず(短絡)、A || Bは直接真であると判定されます。

次に、単純なifステートメントに置き換えることができるかどうかを考えます。
&&の短絡効果を使用して、ifステートメントの関数を置き換えますが、可能ですか?I 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