2017-04-06 51 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