プログラムをバイナリプログラムのreturn文の計算を理解するカントしかし、私はは</p> <p>は、それが正常に動作している再帰とCに再帰でバイナリ変換の
は、いずれかに私を助けることができる1文の意味を理解カント以下を説明する
return(num%2)+ 10 * binary_conversion(num/2); 13の入力を持っている間
これはnum = 13のように混乱しています。 13%2 = 1 + 10 * 6 = 66、
int binary_conversion(int);
int main()
{
int num, bin;
printf("Enter a decimal number: ");
scanf("%d", &num);
bin = binary_conversion(num);
printf("The binary equivalent of %d is %d\n", num, bin);
}
int binary_conversion(int num)
{
if (num == 0)
{
return 0;
}
else
{
return (num % 2) + 10 * binary_conversion(num/2);
}
}
「binary_conversion(6)」は、あなたを混乱させる例では6となると思いますか?その呼び出しの再帰的ロジックを追跡すると、実際には '110'を返します。したがって、最上位レベルの計算は、実際には13のバイナリ表現である '1 + 10 * 110 = 1 + 1100 = 1101'になります。なぜ' binary_conversion(6) 'が' 110 '。途中で、引き数3、1、0を使って 'binary_conversion()'を再帰的に呼び出す必要があることがわかります。引数を6にして13を解決する必要があるのと同じです。 – pjs