2016-01-05 71 views
0

我想打印輸入的數字對稱,沒有零使用遞歸函數。我們來看一個名爲void demo(int n)的方法。例如n = 5「5 4 3 2 1 2 3 4 5」。我可以打印「5 4 3 2 1」。我的遞歸函數是demo(n-1),所以我可以打印。當函數達到n = 0時,我認爲它必須回覆這些值,但是如何?我無法在if區塊內寫入任何內容。遞歸打印這些數字

public class demo { 

    void demo(int n) { 
     if (n == 0) 
     { 

     } 
     System.out.println(n); 
     return demo(n-1); 
    } 
} 
+1

可能使用[使用遞歸打印對稱整數序列,然後向下計數]重複(http://stackoverflow.com/questions/14823511/using-recursion-to-print-symmetric-integer-sequences-that-倒數計時) – rb612

+0

您可以編寫完整的解決方案嗎? –

回答

1

這是我會做:

public class demo { 
    void demo(int n) { 
     System.out.println(n); 

     if (n > 1) { 
      demo(n - 1); 
      System.out.println(n); 
     } 
    } 
} 

這不是尾遞歸,但這是遞歸比簡單重複的情況。

如果您遍歷那麼你就需要兩個循環:

  1. 一環從n遞減計數到1
  2. 另一個計數從2n的循環。

但是,使用遞歸我們可以簡單地從n倒計時1並打印出每個號碼,然後遞歸後再次打印數量。