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 回答