第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

英文標(biāo)尺遞歸問(wèn)題

英文標(biāo)尺遞歸問(wèn)題

PIPIONE 2023-09-06 15:41:00
我正在嘗試試運(yùn)行書中的英語(yǔ)標(biāo)尺方法,但是試運(yùn)行有點(diǎn)令人困惑,而且我的輸出和原始輸出不同。public static void drawRuler(int nInches, int majorlength){  drawLine(majorLength, 0);  for (int j =1; j<= nInches, j++)  {   drawInterval(majorLength-1);   drawLine(majorLength, j); }}private static void drawInterval (int centralLength){ if (centralLength>=1) {  drawInterval(centralLength - 1);  drawLine(centralLength);  drawInterval(centrakLength-1); }}public static void drawLine(int tickLength, int tickLabel){ for (int j=0; j<ticklength; j++)   System.out.print("-") if (tickLabel>=0)  System.out.print(" "+tickLable); System.out.print("\n");}private static void drawLine(int tickLength){  drawLine(tickLength, -1);}第一次,我進(jìn)入nInches = 1 and majorlength 3,1- 將使用 (3,0) // 刻度長(zhǎng)度和刻度標(biāo)簽調(diào)用drawLinepublic static void drawLine(3, 0)    {     for (int j=0; j<3; j++)       System.out.print("-")     if (tickLabel>=0)      System.out.print(" "+tickLable);     System.out.print("\n");    }輸出:--- 02-現(xiàn)在下面的循環(huán)將從drawRuler函數(shù)運(yùn)行for (int j =1; j<=1, j++)      {       drawInterval(majorLength-1);* Point1: 意味著上面的線會(huì)調(diào)用drawInterval(2) ?*drawLine(majorLength, j);     }3-我們轉(zhuǎn)到以 2 作為參數(shù)的函數(shù)drawIntervalprivate static void drawInterval (2)    {     if (centralLength>=1)   // true     {      drawInterval(centralLength - 1); **Point 2: what the point of calling same function with 1 ? and will it call itself again without drawing anything? and function will go on nextline after drawInterval become 0?**drawLine(centralLength);      drawInterval(centrakLength-1);     }    }Point3:drawLine(tickLength, -1);為什么我們用這個(gè)-1?
查看完整描述

1 回答

?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊


你的代碼甚至無(wú)法編譯,有很多語(yǔ)法錯(cuò)誤和變量用詞不當(dāng)。您是否通過(guò)掃描 + OCR 從書中獲取了源代碼,而沒有嘗試使用 Java 運(yùn)行它?

因此,首先讓我們修復(fù)錯(cuò)誤,并將這段零散的代碼變成一個(gè)帶有 main 方法的類,好嗎?

package de.scrum_master.stackoverflow;


public class EnglishRuler {

? public static void main(String[] args) {

? ? drawRuler(2, 4);

? }


? public static void drawRuler(int nInches, int majorLength) {

? ? drawLine(majorLength, 0);

? ? for (int j = 1; j <= nInches; j++) {

? ? ? drawInterval(majorLength - 1);

? ? ? drawLine(majorLength, j);

? ? }

? }


? private static void drawInterval(int centralLength) {

? ? if (centralLength >= 1) {

? ? ? drawInterval(centralLength - 1);

? ? ? drawLine(centralLength);

? ? ? drawInterval(centralLength - 1);

? ? }

? }


? private static void drawLine(int tickLength, int tickLabel) {

? ? for (int j = 0; j < tickLength; j++)

? ? ? System.out.print("-");

? ? if (tickLabel >= 0)

? ? ? System.out.print(" " + tickLabel);

? ? System.out.print("\n");

? }


? private static void drawLine(int tickLength) {

? ? drawLine(tickLength, -1);

? }

}

drawRuler(1, 3)印刷:


--- 0

-

--

-

--- 1

drawRuler(1, 5)印刷:


----- 0

-

--

-

---

-

--

-

----

-

--

-

---

-

--

-

----- 1

drawRuler(2, 4)印刷:


---- 0

-

--

-

---

-

--

-

---- 1

-

--

-

---

-

--

-

---- 2

這一切都在預(yù)料之中?,F(xiàn)在讓我們向程序添加一些可選的調(diào)試輸出:


package de.scrum_master.stackoverflow;


public class EnglishRuler {

? private static boolean DEBUG = true;

? private static String indent = "";


? public static void main(String[] args) {

? ? drawRuler(1, 3);

? }


? public static void drawRuler(int nInches, int majorLength) {

? ? if (DEBUG)

? ? ? System.out.println("drawRuler(" + nInches + ", " + majorLength + ")");

? ? drawLine(majorLength, 0);

? ? for (int j = 1; j <= nInches; j++) {

? ? ? drawInterval(majorLength - 1);

? ? ? drawLine(majorLength, j);

? ? }

? }


? private static void drawInterval(int centralLength) {

? ? indent += "? ";

? ? if (DEBUG)

? ? ? System.out.println(indent + "drawInterval(" + centralLength + ")");

? ? if (centralLength >= 1) {

? ? ? drawInterval(centralLength - 1);

? ? ? drawLine(centralLength);

? ? ? drawInterval(centralLength - 1);

? ? }

? ? indent = indent.substring(2);

? }


? private static void drawLine(int tickLength, int tickLabel) {

? ? indent += "? ";

? ? if (DEBUG)

? ? ? System.out.println(indent + "drawLine(" + tickLength + ", " + tickLabel + ")");

? ? for (int j = 0; j < tickLength; j++)

? ? ? System.out.print("-");

? ? if (tickLabel >= 0)

? ? ? System.out.print(" " + tickLabel);

? ? System.out.print("\n");

? ? indent = indent.substring(2);

? }


? private static void drawLine(int tickLength) {

? ? drawLine(tickLength, -1);

? }

}

DEBUG只要是,這就不會(huì)改變輸出false。如果將其設(shè)置為true,則日志將drawRuler(1, 3)變?yōu)椋?/p>


drawRuler(1, 3)

? drawLine(3, 0)

--- 0

? drawInterval(2)

? ? drawInterval(1)

? ? ? drawInterval(0)

? ? ? drawLine(1, -1)

-

? ? ? drawInterval(0)

? ? drawLine(2, -1)

--

? ? drawInterval(1)

? ? ? drawInterval(0)

? ? ? drawLine(1, -1)

-

? ? ? drawInterval(0)

? drawLine(3, 1)

--- 1

在那里你有一個(gè)自動(dòng)生成的試運(yùn)行版本。


至于你的問(wèn)題:


第一次,我進(jìn)入nInches = 1并且majorlength = 3,


1)drawLine將用(3,0)(tickLength和tickLabel)調(diào)用


正確的。


Point1:上面那行的意思是會(huì)調(diào)用drawInterval(2)?


正確的。


第3點(diǎn):drawLine(tickLength, -1). 我們?yōu)槭裁从眠@個(gè)-1?


因?yàn)槔锩鎑rawLine(int tickLength, int tickLabel)說(shuō):


? ? if (tickLabel >= 0)

? ? ? System.out.print(" " + tickLabel);

因此,使值tickLabel小于零只是當(dāng)我們不在主間隔而是在其間較小的子間隔時(shí)避免打印標(biāo)簽的一種方法。


更新:我還根據(jù)遞歸級(jí)別向具有調(diào)試輸出的程序版本添加了縮進(jìn),并且還更新了日志輸出以縮進(jìn),以便OP更好地理解。


更新 2:您可以通過(guò)內(nèi)聯(lián)便捷方法來(lái)簡(jiǎn)化程序,drawLine(int tickLength)如下所示:


? private static void drawInterval(int centralLength) {

? ? // ...

? ? ? drawInterval(centralLength - 1);

? ? ? drawLine(centralLength, -1);? // Note the additional ", -1"

? ? ? drawInterval(centralLength - 1);

? ? // ...

? }

然后刪除這個(gè),因?yàn)楝F(xiàn)在它不再使用了:


? // Delete me!

? private static void drawLine(int tickLength) {

? ? drawLine(tickLength, -1);

? }

更新 3:因?yàn)槟坪鯇?duì)我沒有為方便方法打印日志輸出感到非常惱火drawLine(int tickLength),所以這里也是為該方法生成輸出的原始程序的另一個(gè)擴(kuò)展版本,現(xiàn)在完全復(fù)制您的筆和紙?jiān)囘\(yùn)行:


package de.scrum_master.stackoverflow;


public class EnglishRuler {

? private static boolean DEBUG = true;

? private static String indentText = "";


? public static void main(String[] args) {

? ? drawRuler(1, 3);

? }


? public static void drawRuler(int nInches, int majorLength) {

? ? debugPrint("drawRuler(" + nInches + ", " + majorLength + ")");

? ? drawLine(majorLength, 0);

? ? for (int j = 1; j <= nInches; j++) {

? ? ? drawInterval(majorLength - 1);

? ? ? drawLine(majorLength, j);

? ? }

? }


? private static void drawInterval(int centralLength) {

? ? indent();

? ? debugPrint("drawInterval(" + centralLength + ")");

? ? if (centralLength >= 1) {

? ? ? drawInterval(centralLength - 1);

? ? ? drawLine(centralLength);

? ? ? drawInterval(centralLength - 1);

? ? }

? ? dedent();

? }


? private static void drawLine(int tickLength, int tickLabel) {

? ? indent();

? ? debugPrint("drawLine(" + tickLength + ", " + tickLabel + ")");

? ? for (int j = 0; j < tickLength; j++)

? ? ? System.out.print("-");

? ? if (tickLabel >= 0)

? ? ? System.out.print(" " + tickLabel);

? ? System.out.print("\n");

? ? dedent();

? }


? private static void drawLine(int tickLength) {

? ? indent();

? ? debugPrint("drawLine(" + tickLength + ")");

? ? drawLine(tickLength, -1);

? ? dedent();

? }


? private static void debugPrint(String message) {

? ? if (DEBUG)

? ? ? System.out.println(indentText + message);

? }


? private static void indent() {

? ? indentText += "? ";

? }


? private static void dedent() {

? ? indentText = indentText.substring(2);

? }

}

更新后的控制臺(tái)日志變?yōu)椋?/p>


drawRuler(1, 3)

? drawLine(3, 0)

--- 0

? drawInterval(2)

? ? drawInterval(1)

? ? ? drawInterval(0)

? ? ? drawLine(1)

? ? ? ? drawLine(1, -1)

-

? ? ? drawInterval(0)

? ? drawLine(2)

? ? ? drawLine(2, -1)

--

? ? drawInterval(1)

? ? ? drawInterval(0)

? ? ? drawLine(1)

? ? ? ? drawLine(1, -1)

-

? ? ? drawInterval(0)

? drawLine(3, 1)

--- 1

我發(fā)現(xiàn)這是不必要的,但如果它對(duì)你有幫助,我很高興。


查看完整回答
反對(duì) 回復(fù) 2023-09-06
  • 1 回答
  • 0 關(guān)注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)