プログラミングにおける短絡特性(論理演算のみ)


今日問題を書く時、討論の中で誰かが短絡特性で再帰的な終了を実現しているのを見て、とても高いと思います.私は白です.許してください.それでは、短絡特性とは何かを勉強しました.
ショート特性には、次のものがあります.
短絡と(&)と短絡または(|)
  • >a&&bの場合、aの値が偽である場合、式全体の値は偽であり、左から右に計算される.したがって、この式を実行すると、bの値はその初期値であり、演算は行われない.

  • 例えば、(m=a>b)&(n=c>d)は、a b c dがそれぞれ1,2,3,4,m=n=1の場合、a>bが0のためm=0となる.その後は実行されないので、n=1は0ではありません.
  • >a|bの場合、aの値が真であれば、式全体の値が真であり、実行順序は同じである.bの真偽は最初の真偽から判断され,すなわち,aが真である場合,bは演算を行わない.

  • まとめ:
    だから短絡現象は実は論理演算の特性に関係していて、それから意識的に「コンピュータもサボる」ことに注意して、このように簡単です.
    また私が作った問題を添付して、とても簡単で、短絡と特性を再帰的な終結条件として使うことに注意して、とても簡潔に使いました.
    1+2+3+…+nを求めて、乗除法、for、while、if、else、switch、caseなどのキーワードと条件の判断文(A?B:C)を使うことができないことを要求します.
    class Solution {
    public:
        int Sum_Solution(int n) {
            int ans = n;
            ans && (ans += Sum_Solution(n - 1)); //        
            return ans;
        }
    };

    では、白さんはどう書きましたか.
    class Solution {
    public:
        int Sum_Solution(int n) {
            if(n>=1)
                return n + Sum_Solution(n-1);
            else
                return 0;
    
        }
    };

    みんなが少しのものを学ぶことができることを望んで、私のようにシロにならないでください—————————————————————————————————超シロ