任何人都可以想到一种方法来打印这种模式而不在方法之外存储数据吗?

时间:2018-04-11 17:43:05

标签: java recursion

此递归方法接受非负整数(在本例中为6)并根据整数打印以下模式:

2 个答案:

答案 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();
    } 
}