编写一个能产生下面所示输出的方法.这个输出是通过调用数字1写出的.在这个铺子中,停止于第4级,但你的方法应该能继续到任何特定的一级.
This was written by call nuumber 2.
This was written by call nuumber 3.
This was written by call nuumber 4.
This ALSO was written by call nuumber 4.
This ALSO was written by call nuumber 3.
This ALSO was written by call nuumber 2.
This ALSO was written by call nuumber 1.Java递归
This was written by call nuumber 2.
This was written by call nuumber 3.
This was written by call nuumber 4.
This ALSO was written by call nuumber 4.
This ALSO was written by call nuumber 3.
This ALSO was written by call nuumber 2.
This ALSO was written by call nuumber 1.Java递归
if(start==end+1){
for (int i = end; i>0; i--)
System.out.println ("This ALSO was written by call nuumber "+i+".");
}
else {
System.out.println ("This was written by call nuumber"+start+".");
start++;
sob(start,end);
}
}
可以实现你的要求,就不知道是不是你要问的
public static void sob(int start, int end) {
if (start == end + 1) {
for (int i = end; i > 0; i--) {
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
System.out.println("This ALSO was written by call number " + i
+ ".");
}
} else {
for (int i = 0; i < start; i++)
System.out.print(" ");
System.out.println("This was written by call number " + start + ".");
start++;
sob(start, end);
}
} public static void main(String[] args) {
Test.sob(1, 3);
}
}
System.out.print(" ");这个j的初始值应该是1
1、原输出共7行,而我的代码只有6行
2、内容上,原输出第4行已经与前面3行不一样了修改后代码如下,测试输出效果与原输出一致(如果你的输出中,第1行没有空格,可以将if块中的j和else块中的i的起始值都改为1;有空格的话,以下代码就满足所要求的输出了):
package test;
public class CirculateTest {
public static void sob(int start, int end) {
if (start == end + 1) {
for (int i = end + 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
System.out.println("This ALSO was written by call number " + i
+ ".");
}
} else {
for (int i = 0; i < start; i++){
System.out.print(" ");
}
start++;
System.out.println("This was written by call number " + start + ".");
sob(start, end);
}
}
public static void main(String[] args) {
CirculateTest.sob(1, 3);
}
}