亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以相反順序打印遞歸

以相反順序打印遞歸

叮當貓咪 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 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號