再起的な手続きを用いてn桁の2進数を全て出力する

やまざきさん
(No.1)
○test(4)を呼び出したとき、3行目に出力される2進数は?
[プログラム]
大域:整数型:n // 2進数の桁数
大域:整数型の配列:bin ←(32個の未定義の値)
OprintBin()
整数型:i
for (iを1からnまで1ずつ増やす)
bin[i]の値を出力する
endfor
改行コードを出力する
ObinaryNumber(整数型:K)
if (k > n)
printBin()
else
bin[k] ← 0
binaryNumber (k + 1)
bin[k] ← 1
binaryNumber (k + 1)
endif
Otest (正数型: numberOfDigits)
n ←numberOfDigits
binaryNumber (1)
上記問題集から抜粋したもので、問題の答えが1101になるらしくその理由が理解できないです。
自分のやり方だと1行目が0000になる、までしか導けず、解説を読むと自分のif文の解がおかしい?(解説文には2>nなのでprintBinを呼び出す、と書かれている)ようですが、何がおかしいかわからず…。
有識者の方、解説お願いできますでしょうか。
Otest (4)
n ←numberOfDigits // nに4を代入
binaryNumber (1)
ObinaryNumber(1)
if (k > n)
else
bin[k] ← 0 //bin{0}
binaryNumber (k + 1) //1+1
ObinaryNumber(2)
if (k > n)
else
bin[k] ← 0 bin{0,0}
binaryNumber (k + 1) //2+1
ObinaryNumber(3)
if (k > n)
else
bin[k] ← 0 bin{0,0,0}
binaryNumber (k + 1) //3+1
ObinaryNumber(4)
if (k > n)
else
bin[k] ← 0 bin{0,0,0,0}
binaryNumber (k + 1) //4+1
ObinaryNumber(5)
if (k > n) //5>4でtrue
printBin()
OprintBin()
bin{0,0,0,0}を出力して改行
[プログラム]
大域:整数型:n // 2進数の桁数
大域:整数型の配列:bin ←(32個の未定義の値)
OprintBin()
整数型:i
for (iを1からnまで1ずつ増やす)
bin[i]の値を出力する
endfor
改行コードを出力する
ObinaryNumber(整数型:K)
if (k > n)
printBin()
else
bin[k] ← 0
binaryNumber (k + 1)
bin[k] ← 1
binaryNumber (k + 1)
endif
Otest (正数型: numberOfDigits)
n ←numberOfDigits
binaryNumber (1)
上記問題集から抜粋したもので、問題の答えが1101になるらしくその理由が理解できないです。
自分のやり方だと1行目が0000になる、までしか導けず、解説を読むと自分のif文の解がおかしい?(解説文には2>nなのでprintBinを呼び出す、と書かれている)ようですが、何がおかしいかわからず…。
有識者の方、解説お願いできますでしょうか。
Otest (4)
n ←numberOfDigits // nに4を代入
binaryNumber (1)
ObinaryNumber(1)
if (k > n)
else
bin[k] ← 0 //bin{0}
binaryNumber (k + 1) //1+1
ObinaryNumber(2)
if (k > n)
else
bin[k] ← 0 bin{0,0}
binaryNumber (k + 1) //2+1
ObinaryNumber(3)
if (k > n)
else
bin[k] ← 0 bin{0,0,0}
binaryNumber (k + 1) //3+1
ObinaryNumber(4)
if (k > n)
else
bin[k] ← 0 bin{0,0,0,0}
binaryNumber (k + 1) //4+1
ObinaryNumber(5)
if (k > n) //5>4でtrue
printBin()
OprintBin()
bin{0,0,0,0}を出力して改行
2025.02.19 22:23
電タックさん
★FE ブロンズマイスター
(No.2)
上記のままのプログラムだったら下記になって
1行目:0000
2行目:0001
3行目:0010
・・・
と出力されると思います。
n=4ですので、k=2のときにprintBin()が呼び出されることはないです
書籍の正誤表が出ているかもしれないので気になるようでしたら見てみると良いかもしれません。
ですが
bin[k] ← 1
binaryNumber (k + 1)
bin[k] ← 0
binaryNumber (k + 1)
とすれば3行目は1101には一応なりますね
1行目:0000
2行目:0001
3行目:0010
・・・
と出力されると思います。
>解説文には2>nなのでprintBinを呼び出す、と書かれている
n=4ですので、k=2のときにprintBin()が呼び出されることはないです
書籍の正誤表が出ているかもしれないので気になるようでしたら見てみると良いかもしれません。
>問題の答えが1101
ですが
bin[k] ← 1
binaryNumber (k + 1)
bin[k] ← 0
binaryNumber (k + 1)
とすれば3行目は1101には一応なりますね
2025.02.19 23:06
やまざきさん
(No.3)
ご回答ありがとうございました。
0010になる理屈は理解できます。
ちょっと正誤表確認してみます。
0010になる理屈は理解できます。
ちょっと正誤表確認してみます。
2025.02.20 19:17
広告
返信投稿用フォーム
投稿記事削除用フォーム
広告