我必须打印一个三角形图案(半金字塔)
1
0 1
1 0 1
0 1 0 1
Run Code Online (Sandbox Code Playgroud)
我试过这个程序
class tri{
public static void main(String arg[]){
int i,j,a = 1, b =0, c=0;
for(i=1; i<=4; i++){
for(j=1; j<=i; j++){
System.out.print(a+ " ");
c = a;
a = b;
b = c;
}
System.out.println();
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是这会打印出图像所示的图案
如果有人可以帮我编辑代码来引入模式
您需要正确设置起始值.因为你正在做的是不断交换
说第二行 0 1
最后一个元素= 1,(a = 1, b = 0)并交换(a = 0, b = 1)下一行第一个元素.
然而这是不正确的,因为它应该从以前的状态开始(a = 1)而不是(a = 0)从之前的状态.
int i,j,a = 1, b =0, c=0;
for (i = 1; i <= 4; i++){
if (i % 2 == 0) {
a = 0;
b = 1;
} else {
a = 1;
b = 0;
}
for(j=1; j<=i; j++) {
System.out.print(a+ " ");
c = a;
a = b;
b = c;
}
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
您还可以在XOR 之间切换0和1使用XOR:
int i, j, a = 1;
for (i = 1; i <= 4; i++){
a = i % 2;
for(j=1; j<=i; j++) {
System.out.print(a+ " ");
a = a ^ 1;
}
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
然而,更短的解决方案是:
String str = "";
for (int i = 1; i <= 4; i++) {
str = (i % 2) + " " + str;
System.out.println(str);
}
Run Code Online (Sandbox Code Playgroud)
输出:
1
0 1
1 0 1
0 1 0 1
Run Code Online (Sandbox Code Playgroud)
小智 5
最短的将是
String str = "";
for (int i = 1; i <= 4; i++) {
str = (i % 2) + " " + str;
System.out.println(str);
}
Run Code Online (Sandbox Code Playgroud)
这将根据需要提供输出
1
0 1
1 0 1
0 1 0 1
Run Code Online (Sandbox Code Playgroud)