2016-08-04 192 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'塊更好。 –