このソリューションがどのように機能するかを理解しました。
int add_no_arithm(int a, int b) {
if (b == 0) return a;
int sum = a ^ b; // add without carrying
int carry = (a & b) << 1; // carry, but don’t add
return add_no_arithm(sum, carry); // recurse
}
しかし、著者はこの問題について次のようにコメントしています。
「このような問題に対する私たちの最初の本能は、ビットで作業する必要があるということです。なぜですか?+記号を取り除くと、他にどのような選択肢があるのでしょうか?さらに、それがコンピューターのやり方です。」
作者は何を言おうとしているのか?