我已經完成了HTML,但是這與現在在我的AP類中學習java毫無關係。所以我幾乎是全新的編碼。今天我們學習了遞歸,並且我非常肯定我在使用它的時候能夠理解它,就像在這個視頻中一樣。有人可以解釋這個代碼中的遞歸
https://www.youtube.com/watch?v=fpuWkZs51aM
但後來我們不得不以不同的方式來使用它。我們需要製作一個名爲WordPlay的程序,一次接受任何單詞,直到輸入「停止」字樣。當停止放入時,以相反的順序打印出來。這是代碼。
import java.util.Scanner;
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Enter list of words, one per line");
System.out.println("Final word should be STOP");
wordList();
}
public static void wordList()
{
Scanner keyboard = new Scanner(System.in);
String word = keyboard.next();
if (word.equalsIgnoreCase("STOP"))
System.out.println();
else
wordList();
System.out.println(word);
}
}
所以,我不明白的是,這工作得很好,但是當我看到的wordList()
結束它在我看來,它只是不斷重複的最後一個字,這是輸入。我沒有得到我想念的東西。有人可以在這裏解釋邏輯嗎?
好的。所以,如果我理解這個權利,那麼當它得到STOP時,它會自動打印它,並將「word」=留給前一個字符串,然後當打印該字符串時,它會在該字符串之前設置「word」=等等,直到它打印所有值? 這是我不理解的部分,一旦打印出STOP並且最後一個字符串「word」有什麼可以使堆棧的其餘部分打印出來? – JustABitSalty
@JustABitSalty它打印出' word',注意'new String(「a」)!= new String(「a」)''很重要,在這個意義上'word'的值永遠不會改變。每個調用都有自己的* local *變量。 –
好的,我現在和你一起解釋,另一篇文章解釋操作的順序,至於移動掃描儀到別的地方,會在實際的程序中引起內存問題嗎?我記得我們的老師告訴我們堆棧存儲在內存中。 – JustABitSalty