2017-04-06 60 views
3

我有一個賦值使用遞歸方法來輸出多行,每行比前一行多3個空格。這裏是所需輸出的圖片(http://i.imgur.com/mek2QMz.png)。使用遞歸方法嵌套縮進輸出

這是我到目前爲止的代碼:

public class Prog6d { 
    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     int input = scan.nextInt(); 
     System.out.println(printFactorial(input)); 
    } 

    //Calculates the factorial 
    public static int printFactorial(int input) { 
     if (input == 1) { 
      return 1; 
     } 
     System.out.println("factorial(" + input + ")"); 
     System.out.print(" "); 
     return input*printFactorial(input-1); 
    } 
} 

我知道如何使空間顯得正確使用for循環,但我不知道如何用遞歸來做到這一點。

回答

2

我經常這樣做。我有兩個基本方法,相關:

  1. 做一個全局字符串變量縮進,初始化爲空字符串。在進入該功能時,將其延長三個空格。當你離開時,縮短到前一長度。
  2. 添加參數縮進。最初的調用是一個空字符串;每個遞歸將三個空格連接到值。

在每種情況下,我只是使用縮進作爲行上打印的第一件事。

這是否解決您的問題?

+1

我會推薦第一種方法的第二種方法,因爲如果避免使用全局變量,您可以節省很多頭痛的調試程序。如果您將呼叫設爲尾遞歸,則參數化版本應該同樣有效。 – Davislor