嵌套循环:要动态?

Nested Loop: to be dynamic?

好的,我实际上是在做这个练习来解决那些嵌套循环问题。我会说这对我来说是最难的。我尽最大努力变得更加动态而不是静态。谁能告诉我如何解决这个问题?

预期输出:

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

我不是在寻找答案。但我很感激你能指导我。

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 

您需要存储每一步的结果并添加新的步骤。

Ruby 对 for 的作用不大,有更好的方法,比如我在这里使用的 .upto 方法。 inject 提供结果变量 out,您可以在其中添加步骤计算。 " #{2**i} " 是在 space 之后插入为字符串的计算。

(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