2016-08-04 135 views
0

我正在尝试使用while循环创建一个简单的*金字塔,但它停止在前五个*。我无法弄清楚为什么。如何在Ruby中嵌套while循环

这是我的代码:

x = 5 
y = 0 

while x > 0 
    while y < x 
    print "*" 
    y +=1 
    end 

    x -= 1 

end 
+0

您可以粘贴最终输出吗? – naomik

回答

1

你永远不重置y或打印一个新行

x = 5 
y = 0 

while x > 0 
    while y < x 
     print "*" 
     y +=1 
    end 
    print "\n" 
    y = 0 

    x -= 1 

end 

输出

***** 
**** 
*** 
** 
* 

这是不好的红宝石寿

这是一个更加地道的解决方案

5.downto(1) do |x| 
    1.upto(x) do |y| 
    print "*" 
    end 
    print "\n" 
end 

输出

***** 
**** 
*** 
** 
* 

我不知道的“金字塔”的最终形状,你在找什么,但你可能可以调整上述技巧以获得所需的输出

+1

你可能会解释为什么''downto''和'upto'用块比'while'块更好。 –