方法一:
从后往前计算出每层的星星数量与空格打印的数量
for (i <- 1 to 9){ val stars = 2*i-1 val spaces = 9-i println(" "*spaces+"*"*stars) }
方法二:引入变量
代码段更少
for (i <- 1 to 9 ; stars = 2*i-1 ; spaces = 9-i){ println(" "*spaces+"*"*stars) }
也可以写作:
for { i <- 1 to 9 stars = 2*i-1 spaces = 9-i } { println(" "*spaces+"*"*stars) }
方法三:
去掉i,只计算星星数量并且推导出应打印空格数量
for (stars <- 1 to 17 by 2 ; spaces = (17-stars)/2){ println(" "*spaces+"*"*stars) }
结果如下: