第一次写有啥不对的还请见谅
进入正题
数字金字塔虽然是入门时所学的内容,但是几乎都是三循环的,这里的是只有两个循环的,对刚入门的同学来说很不错的。
如果能完全理解这个金字塔如何来的,逻辑思维能力及相关知识的掌握应该很不错了
具体代码如下
package test;
public class jinzita {
public static void main(String[] args) {
int a = 9, k = 1, temp = 0; // a为循环层数 k为打印数字 temp为临时标记k为减还是加
for (int i = 1; i <= a; i++) {
for (int j = 1; j < (a * 2); j++) {
if (j <= (a - i))
System.out.print(" ");
else {
if (k >= 1) {
if (j >= a) {
temp = 1;
} else
temp = 0;
if (temp == 0) {
System.out.print(k);
k++;
} else {
System.out.print(k);
k--;
}
} else
System.out.print(" ");
}
}
k = 1;
System.out.println();
}
System.out.println();
}
}
运行结果如下
大多数使用的如下
public class deng {
public static void main(String args[])
{
int n,i,k,j;
for(n=1; n<=9; n++) //n在最外层控制行数
{
for(i=1; i<=9-n;i++)
System.out.print(" ");
for(k=1; k<=n; k++)
System.out.print(k);
for(j=n-1; j>=1;j--)
System.out.print(j);
System.out.print("\n");
}
}
}
两种不同方法,结果一样的,第一个理解难度大些,不容易理解,下面这个简单容易理解
但两者的区别会很大,设第一种为A,第二种为B
当A和B所需要打印的金字塔层数较少时B所花时间较少,而A所花时间较多,但是随着层数增多,B所花时间会慢慢超过A
具体为什么会这样子,就留给个位同学吧,这也是为什么我单独写出A这种方法的原因