[英]Java Recursion.. need help understanding the solution of the recursive case
編寫一個方法writeChars,該方法接受一個整數參數n並按如下所示輸出n個字符。 輸出的中間字符應始終為星號(“ *”)。 如果要求您寫出偶數個字符,則中間將有兩個星號(“ **”)。 在星號之前,您應寫出少於字符(“ <”)。 星號后應寫出大於號(“>”)。
我已經設法解決了這個問題,但對其中的一項陳述不太了解:
public void writeChars(int n) {
if ( n < 1 ) {
throw new IllegalArgumentException();
}
if( n == 1 ){
System.out.print("*");
return;
}
if ( n == 2 ) {
System.out.print("**");
return;
}
System.out.print("<");
writeChars(n-2);
System.out.print(">");
}
為什么是遞歸的情況:
writeChars(n-2);
n-2? 而不是n-1?
對於每個遞歸調用,代碼正好打印兩個輸出。 因此,對於每次迭代,數量應減少兩個。 如果您寫入n-1
則打印的字符數將增加一倍。 因此,我們必須寫n-2
遞歸語句之前一個打印語句,之后一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.