为了账号安全,请及时绑定邮箱和手机立即绑定

以相反顺序打印递归

以相反顺序打印递归

叮当猫咪 2024-01-25 22:04:18
本周我的在线 CS1 课程的作业是创建一个程序,该程序使用多种方法来打印倒三角形。我已经创建了教授概述的方法,但发现自己完全陷入了以相反顺序打印递归的过程。起初我根本无法掌握递归。看起来 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") 会产生:AAAAAAAAAAAAAAA程序的最终迭代应该产生:AAAAAAAAAAAAAAA我希望在这里得到一些帮助。我很乐意阅读/观看有关递归的推荐材料,因为到目前为止,这是我发现具有挑战性的第一个概念。
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

假设你的递归方法只是从 开始倒数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

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


查看完整回答
反对 回复 2024-01-25
?
慕容3067478

TA贡献1773条经验 获得超3个赞

为了理解递归,首先必须理解递归。

首先要真正理解递归,它应该不难。递归方法的用例相反:简化问题。

递归解决的经典问题有素因数分解、阶乘、汉诺塔等。与CS比较相关的可以是数据结构搜索/排序算法。

查看完整回答
反对 回复 2024-01-25
?
ITMISS

TA贡献1871条经验 获得超8个赞

简单的。只需颠倒 print 语句和递归调用的顺序即可printTriangle():


    public static void printTriangle(int sideLength, String trianglePattern)

    {

        if (sideLength < 1){return;}

        for (int i = 0; i < sideLength; i++)

        {

                System.out.print(trianglePattern);

        }

        System.out.println();

        printTriangle(sideLength - 1, trianglePattern); 

    }

在 Java 中测试:

https://img1.sycdn.imooc.com/65b26a930001d8ae02710111.jpg

查看完整回答
反对 回复 2024-01-25
  • 3 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信