嵌套循环:要动态吗?

时间:2017-01-12 12:20:15

标签: ruby learn-ruby-the-hard-way

好的,我实际上正在做这个练习来解决那些嵌套循环问题。我会说这对我来说是最难的。我尽力做到更有活力而不是静态。谁能给我提示如何解决这个问题?

预期产出:

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

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

2 个答案:

答案 0 :(得分:3)

var n = 352, reverse = 0, remainder;

while (n>0) {
    remainder = n%10;
    reverse = reverse * 10 + remainder;
    n = Math.floor(n / 10);
}

console.log(reverse);

打印

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

答案 1 :(得分: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