BEG 1 + 2 + 3 + ... + n個の和と加算減算、乗算、除算をしない:オファーは安全四〇から七/八証明します

カジュアルワーキング

探している1 + 2 + 3 + ... + nは、のために、使用することができない乗算と除算を必要とし、一方、もし、そうでなければ、スイッチ、ケースと条件文などのキーワードそのような(A B:?C)

思考

私たちは通常、約我々は終了条件が時間内に満たされていないときショート達成するために使用達成するためのデジタルループを、追加した場合の利点を活用する方法だと思います。

コード

 public int Sum_Solution(int n) {
   int sum=n;
        boolean t=(n>0)&&(sum=sum+Sum_Solution(n-1))>0;
        return sum;
    }

カジュアルワーキング

書き込み機能、および2つの整数の和、機能がインビボで使用されなくてもよい+が必要、 - 、*、/四則記号。

思考

&を使用して計算^

初めて目は、小数点を行う方法である:5 + 7 = 12、3つのステップが
1ステップ:値を追加することのメンバーは、2を取得し、実行しません。
ステップ2:キャリー値が算出され、キャリーが0の場合は10を与えるために、このステップは、最初のステップからの値が最終結果です。

第三段階:二段階の上に繰り返すが、付加価値が得られる二つのステップ10および図2の結果となり、12を得ました。

同様に、我々は、バイナリ値の合計を計算するために3段階の方法を使用することができます:
5-101,7-111
最初のステップを:運び、皆の値を加算していない、あなたは異なる行う各バイナリの合計に相当する010を取得しますまたは操作、101 ^ 111。

ステップ2:あなたは101を取得しない操作に対応し1010を与えるように計算キャリー値は、1010(101&111)を得、再び左<< 1。

二工程第三工程上に繰り返し、あなたは、010 ^ 1010 = 1000、フィード=ビット値100(010および1010)を添加する<< 1。
キャリーは、最終的な結果として、ループ1100のうち、0であり、1000年= 1100 ^ 100:二段階の上に繰り返し続けます。

コード

 public int Add(int num1,int num2) {
        while(num2!=0){
            int temp=num1^num2;
             num2=(num1&num2) <<1;
            num1=temp;
        }
        return num1;
    }
公開された70元の記事 ウォン称賛49 ビュー6835

おすすめ

転載: blog.csdn.net/weixin_44015043/article/details/105393868