java - 以相反顺序打印递归

标签 java

本周我的在线 CS1 类(class)的作业是创建一个程序,该程序使用多种方法来打印倒三角形。我已经创建了教授概述的方法,但发现自己完全陷入了以相反顺序打印递归的过程。起初我根本无法掌握递归。看起来 For 循环可以用更少的抽象来完成同样的工作。在阅读了更多有关该主题的内容后,我觉得我对它的工作原理有了更好的理解,但不一定是为什么使用它。这就是我现在所拥有的:


public class RecursiveTriangle {


    public static void main(String[] args) {

        int sideLength = getLength();
        String trianglePattern = getPattern();

        printTriangle(sideLength, trianglePattern);

    }


    public static int getLength ()
    {
        Scanner scr = new Scanner(System.in); 

        System.out.print("Enter a number: ");
        int sideLength = scr.nextInt();

        return sideLength; 
    }

    public static String getPattern() 
    {
        Scanner scr = new Scanner(System.in);

        System.out.print("Enter a character: ");
        String trianglePattern = scr.nextLine();

        return trianglePattern; 
    }

    public static void printTriangle(int sideLength, String trianglePattern)
    {
        if (sideLength < 1){return;}
        printTriangle(sideLength - 1, trianglePattern); 
        for (int i = 0; i < sideLength; i++)
        {
                System.out.print(trianglePattern);
        }
        System.out.println();

    }

}

当前迭代以“正常”顺序打印出一个三角形。输入 int(5) 和 String ("AA") 会产生:

A
AA
AAA
AAAA
AAAAA

程序的最终迭代应该产生:

AAAAA
AAAA
AAA
AA
A

我希望能在这里得到一些帮助。我很乐意阅读/观看有关递归的推荐 Material ,因为到目前为止,这是我发现具有挑战性的第一个概念。

最佳答案

假设您的递归方法只是从 n 开始倒数。

static void countDown(int n) {
    if (n <= 0)
        return;
    countDown(n - 1);
}
<小时/>

要按递归顺序打印,请在递归调用之前插入打印语句:

static void countDown(int n) {
    if (n <= 0)
        return;
    System.out.println(n);
    countDown(n - 1);
}

输出

5
4
3
2
1

看,从 5 开始倒计时。

<小时/>

要以反向方式打印,请在递归调用之后插入打印语句:

static void countDown(int n) {
    if (n <= 0)
        return;
    countDown(n - 1);
    System.out.println(n);
}

输出

1
2
3
4
5

看,向上计数,即向下计数的相反。

关于java - 以相反顺序打印递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58685043/

相关文章:

java - DataTables 的 JSON 数据中缺少根元素

java:我正在尝试通过java程序创建任何abc.exe的快捷方式

java - 自定义链表的indexof调用(java)

java - 性能:Apache HttpAsyncClient与多线程URLConnection

java - Servlet 中的 hibernate 导致 NoClassDefFoundError : org/slf4j/LoggerFactory

java - 惰性一对一 Spring JPA 和构建 "dynamic"JSON

java - 检查数组是否包含一个整数值

java - 参数值 [2018-04-08T11 :02:44] did not match expected type [java. util.Date (n/a)]

java - Java的正则表达式引擎是否在内部优化了字符类表达式?

java - 哪些库可用于将对象表示形式转换为表示层中的 JSON/XML?