✔ 最佳答案
第一,你 define 了 recursivePrint() 是不會回傳的,於是以下這句是錯的:
System.out.print( recursivePrint(count-1, ch) )
由於 recursivePrint( cout-1, ch ) 不回傳,
所以 System.out.print() 的括號內將不會收到任何東西,
但 System.out.print() 卻被定義為必須接收 argument,
這是第一個錯。
第二,按你的意思,Recursion.recursivePrint( 1, '*'); 應改寫為
Recursion.recursivePrint( 4, '*');
因為你想印四個星號。
其它錯誤亦更正了,改寫後如下,請參考一下:
public class TestRecursion
{
public static void main (String[] args)
{
Recursion recursion = new Recursion();
recursion.recursivePrint( 4, '*');
}
private static class Recursion
{
public void recursivePrint( int count, char ch )
{
// base case
if ( count==0 )
{
// do nothing, just return
return;
}
else
{
System.out.print( ch );
recursivePrint( count - 1, ch );
}
}
}
}
每次 recursivePrint() 被 invoke 時,
它先會檢查 count 是否為 0,
如果 = 0,不用再 print 任何 character,
如 > 0,print 多一個 character,
然後再 invoke recursivePrint( count - 1, ch ),
count - 1 的意思是餘下 ( count - 1 ) 未 print,
所以一開始的 recursion.recursivePrint( 4, '*'); 即餘下四個 * 號未 print
註:如有興趣私人補習 Java,請電郵聯絡:
[email protected]