此递归方法接受非负整数(在本例中为6)并根据整数打印以下模式:
答案 0 :(得分:3)
简单:
打印第一行,递归,打印最后一行
这里的递归模式是中间部分与a-1
的函数相同。
public static void printPattern(int a){
if (a != 0) {
for(int i = 0; i < a; i++){
System.out.print("*");
}
System.out.println();
printPattern(a-1);
for(int i = 0; i < a; i++){
System.out.print("*");
}
System.out.println();
}
}
那么,你怎么得到这个?查看printPattern(2)
:
**
*
*
**
和printPattern(3)
***
**
*
*
**
***
如您所见,printPattern(3)
的输出包含printPattern(2)
的输出。
所以我们的函数应该只输出不在printPattern(2)
中的部分:
*
a
次。printPattern(a-1)
*
a
次。现在,只缺少一件:中止条件
当我们查看a = 0
的输出时,函数的行为会有所不同
它不会打印任何内容。
这就是我们的中止情况。
答案 1 :(得分:1)
试试这个:
public static void printPattern(int a) {
if(a > 0) {
for(int i = 0; i < a; i++) {
System.out.print("*");
}
System.out.println();
printPattern(a-1);
for(int i = 0; i < a; i++) {
System.out.print("*");
}
System.out.println();
}
}