Ruby中的金字塔模式需要一些代码更正

时间:2015-01-15 14:26:11

标签: ruby


    

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

任何人都可以告诉我我的代码有什么问题

i=1
k=5
j=1
t=1
t=k
i.upto(k) do 
    j.upto(t) do 
        print " "
    end  
    t-=1 

    j.upto(2*i-1) do 
        print "*" 
    end 
    j+=1 
    print "\n" 
    i+=1 
end 

2 个答案:

答案 0 :(得分:2)

一个字符值对其他程序员不利。

String可以使用*运算符相乘。

puts函数打印带有折线的字符串。 puts ""print "\n"

提供相同的结果

upto不太好,请直截了当地使用timeseach

a += 1并不酷,继续修改值应该是最小的。

def pyramid(height)
  height.times {|n|
    print ' ' * (height - n)
    puts '*' * (2 * n + 1)
  }
end
pyramid 5

将提供

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

答案 1 :(得分:1)

最低限度的修改,使您的代码能够满足您的需求:

i=1
k=5
t=5

i.upto(k) do
  t.times do
    print ' '
  end

  (2 * i - 1).times do
    print '*'
  end

  print "\n"

  t -= 1
  i += 1
end