请问(i+1)*2是如何推算出来的呢

题目:打印出如下图案(菱形)

*






*   

public class lianxi19 {
public static void main(String[] args) {
int H = 7, W = 7;//高和宽必须是相等的奇数
for(int i=0; i<(H+1) / 2; i++) {
for(int j=0; j<W/2-i; j++) {
System.out.print(" ");
}
for(int k=1; k<(i+1)*2; k++) {
System.out.print('*');
}
System.out.println();
}
for(int i=1; i<=H/2; i++) {
for(int j=1; j<=i; j++) {
System.out.print(" ");
}
for(int k=1; k<=W-2*i; k++) {
System.out.print('*');
}
System.out.println();
}
}
}
大神们好,请问i<(H+1) / 2 j<W/2-i i<=H/2 j<=i k<=W-2*i这些关系式是如何推算出来的呢,万分感谢

 这个很简单,打印一个菱形,可以分为上下两部分,各为一个等腰三角形。
这个等腰三角形的高度,是菱形高度)的一半(当高度为偶数)或者(高度+1)的一半(当高度为奇数),所有是  (H+1)/2
上下两半对称,这里只讨论上面一半,对于第i行,先输出空格, 再输出星号。输出多少空格呢?显然是W/2-i+1个,然后输出(i+1)*2个*