私は最近このインタビューの質問に出くわしました、そして私はビット操作が得意ではありません。関数「f」が何をするのか説明してもらえますか?この再帰関数が何をするのかわかりません。
unsigned int f (unsigned int a , unsigned int b)
{
return a ? f ( (a&b) << 1, a ^b) : b;
}
Visual Studioにコードを貼り付けてロジックをテストしようとしましたが、コンパイラーが「タイプ 'uint'を 'bool'に暗黙的に変換できません。戻り値の条件ステートメント(a?)に何かがありませんか?」というエラーメッセージがスローされます。面接の質問が上記とまったく同じであることを確認してください
さて、これに言及しているコメントの数人は、2つの数字を追加するだけです。いくつかの入力を試して結果を記録するよりも、それを理解するためのより良い方法がわかりません。
例:
f(5,1) --> returns f(2,4) --> returns f(0,6) --> returns 6
1.) 5&1 = 1 bit shifted = 2: 5^1 = 4
2.) 2&4 = 0 bit shifted = 0: 2^4 = 6
3.) a = 0 so return b of 6
f(4,3) --> returns f(0,7) --> returns 7
1.) 4&3 = 0 bit shifted = 0: 4^3 = 7
2.) a = 0 so return b of 7
出力のいくつかの例を示した後、fが2つの入力を足し合わせて返すと仮定できると思います。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加