| 发表于:2007-01-22 22:45:424楼 得分:40 |
不是啊 args[0] 就是你的要打印的菱形的行数,其实它的值 x * 2 + 1=你菱形的最大行的*个数 你可以看一下你的程序 他是这样的,如果你输入了10 1==〉先打10 个空格 (show(math.abs(n), ' ');) , 然后打一个*( show((line-math.abs(n))*2+1, '* ');), 再换行(system.out.println();),所以它不是对称打印,只是打印,每行的最后一个* 后面不是和同一行第一个*前面同样个数的空格,而是一个回车换行符 2==〉你的n = -line 所以空格会越来越少,因为abs(n+1) < abs(n),但是当n 〉=0之后 abs(n+1) > abs(n) 此时 空格越来越多 3==〉再看你的星号公式 (line-math.abs(n)) * 2 + 1 ,首先你的(abs(n))递减,所以*越来越多,当n为非负时,此时 * 会减小。正好在[-n,n]的区间内完成了上下两个对称的三角形,而不是左右对称 | | |
|