此递归方法接受一个非负整数(在这种情况下为6),并根据该整数打印以下模式:

最佳答案

简单:

打印第一行,递归,打印最后一行。
这里的递归模式是中间部分与您使用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的输出时,该函数的行为有所不同。
它不打印任何内容。

这就是我们的中止条件。

10-08 00:50