首页 > 代码库 > 扩展思维
扩展思维
一、
*
***
*****
******* 打印出上面的图案,
*****
***
*
通常的做法是把整个图案分成两部分,做两次循环即可得到这个图案,网上有很多这样的程序,百度即可,今天在这里就不介绍这个方法了,要介绍的是下面的程序,
/**
* 将整个图案以中心点为原点画个坐标,定义行数row,然后将x,y从-row到row做循环
* 将坐标上|x|+|y|<row的整数点全部打印上*即可
*
* @author Administrator
*
*/
public class Star {
/**
* @param args
*/
public static void main(String[] args) {
int row=(int)(Math.random()*10+1);
for(int x=-row;x<=row;x++){
for(int y=-row;y<=row;y++){
if(Math.abs(x)+Math.abs(y)<=row){
System.out.print(“*”);
}else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
这样做的好处是可以扩展,例如如下:
程序:
public class Star {
/**
* @param args
*/
public static void main(String[] args) {
int row=(int)(Math.random()*10+1);
for(int x=-row;x<=row;x++){
for(int y=-row;y<=row;y++){
if(Math.abs(x)+Math.abs(y)<=row){
System.out.print((char)(Math.abs(x)+‘n‘+Math.abs(y)));
}else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
输出如下:
s
srs
srqrs
srqpqrs
srqpopqrs
srqponopqrs
srqpopqrs
srqpqrs
srqrs
srs
s
也可以是如下这样:
w
vvv
uuuuu
ttttttt
sssssssss
rrrrrrrrrrr
qqqqqqqqqqqqq
ppppppppppppppp
ooooooooooooooooo
nnnnnnnnnnnnnnnnnnn
ooooooooooooooooo
ppppppppppppppp
qqqqqqqqqqqqq
rrrrrrrrrrr
sssssssss
ttttttt
uuuuu
vvv
w
可能不太好看,将就一下哈,还可以是如下这种图案。
n
ono
ponop
qponopq
ponop
ono
n
二、将两层循环的程序变为一层循环,当然也可以用递归实现,理论上递归可以实现的程序循环也可以实现:
以九九乘法表为例,两层循环如下:
public class ChengFaBiao {
/**
* @param args
*/
public static void main(String[] args) {
for(int i=1;i<=9;i++){
for(int j =1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+‘\t‘);
}
System.out.println();
}
}
}
递归如下:
public class ChengFaBiao1 {
/**
* @param args
*/
public static void main(String[] args) {
print(1);
}
//使用递归打印乘法表
public static void print(int j){
if(j>9){
return;
}
for(int i=1;i<=j;i++){
System.out.print(i+"*"+j+"="+j*i+" ");
}
System.out.println();
print(++j);
}
}
单层循环如下:
public class ChengFaBiao2 {
/**
* @param args
*/
public static void main(String[] args) {
int i = 1;
for(int j = 1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+"\t");
if(j==9){
break;
}
if(j==i){
i++;
j=0;
System.out.println();
// continue;
}
}
System.out.println();
}
}
它们的输出结果都一样,输出为