2017-01-12 10 views
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 

。しかし、私はあなたが私を導くことができて感謝します。あなたはすべてのステップの結果を格納し、新しいステップを追加する必要が

答えて

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 
+0

を与える

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

。 – Suresh

+0

エンドブロックを追加するのを忘れてしまった、動作するはずです –

+0

よろしいですか。私はこの質問を解決するために数学計算が不足していると思います – Suresh

1

Rubyはあまり役に立ちません。ここで使用する.uptoメソッドなどの方法があります。 injectには、ステップ計算を追加できる結果変数outがあります。 " #{2**i} "は、後にスペースを入れた文字列として補間された計算です。それがすべてでは動作しません。いや

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 
+1

の半分を学ぶ –

+0

Notedありがとう – Suresh