3

わかりました、実際にこの演習を行って、ネストされたループの質問に取り組みます。これが私にとって最も難しいことだと言えます。静的ではなく、より動的になるように最善を尽くしました。これを解決する方法についてのヒントを教えてもらえますか?

期待される出力:

1
1 2
1 2 4
1 2 4 8
1 2 4 8 16
1 2 4 8 16 32
1 2 4 8 16 32 64
1 2 4 8 16 32 64 128

これは私の静的コードです:

n = 1
for i in 1..8

       for c in 1..n
               case i
                     when 1
                        print "1"
                     when 2
                        print "1 2"
                     when 3
                        print "1 2 4"
                     when 4
                        print "1 2 4 8"
                     when 5
                        print "1 2 4 8 16"
                     when 6
                        print "1 2 4 8 16 32"
                     when 7
                        print "1 2 4 8 16 32 64"
                     when 8
                        print "1 2 4 8 16 32 64 128"
               end
                  print "\n"
       end
end

私は答えを探しているわけではありません。でもご指導いただけるとありがたいです。

4

2 に答える 2

3
for x in 0..7
  for y in 0..x
    op = 2**y
    print op, " "
  end
  puts ""
end

版画

1 
1 2 
1 2 4 
1 2 4 8 
1 2 4 8 16 
1 2 4 8 16 32 
1 2 4 8 16 32 64 
1 2 4 8 16 32 64 128 
于 2017-01-12T12:33:28.343 に答える
1

すべてのステップの結果を保存し、新しいステップを追加する必要があります。

Ruby は for であまり機能しません。ここで使用する方法など、より優れた方法があり.uptoます。は、ステップ計算を追加できるinject結果変数を提供します。out" #{2**i} "、後ろにスペースを入れた文字列として補間された計算です。

(0.upto 8).inject("") do |out, i|
  puts out
  out << "#{2**i} "
end

どちらが与える

1 
1 2 
1 2 4 
1 2 4 8 
1 2 4 8 16 
1 2 4 8 16 32 
1 2 4 8 16 32 64 
1 2 4 8 16 32 64 128 
于 2017-01-12T12:46:12.217 に答える