在java中居中递归帕斯卡三角形?

时间:2014-03-13 14:00:27

标签: java math recursion user-input

我得到了Pascal三角形的输出,数字是正确的,除格式之外的所有内容都必须在输出中正确(即居中)。我怎样才能做到这一点?我们还没有学过任何'System.out.format'类型编码,我见过的任何解决方案都涉及到。

计划1

public class Pascal
{
   private int r;

   public Pascal(int numRows)
   {
   r=numRows;
   }


    public static int recrPascal(int row, int col)
    {
        int val1, val2, result = 0;
        if (row == 0 || col == 0 || row == col + 1)
        {
            return 1;
        }

        val1 = recrPascal(row - 1, col - 1);
        val2 = recrPascal(row - 1, col);

        return val1 + val2;
    }

      public static void printPascalRecursion(int maxRows)
    {
        for (int i = 0; i <= maxRows; i++)
        {
            for (int j = 0; j < i; j++)
            {
                System.out.print(recrPascal(i, j) + " ");
            }
            System.out.println();

        }
    }
     }

计划2

import java.util.*;
public class PascalDriver
{
   public static void main(String [] args)

   {
      Scanner kbReader = new Scanner(System.in);
      System.out.print("Enter value for n: ");
      int n = kbReader.nextInt();
      Pascal a = new Pascal(n);


      a.printPascalRecursion(n);




   }


}

2 个答案:

答案 0 :(得分:1)

所以你希望输出像

$$$ 1

$$ 1 1

$ 1 2 1

依旧......

将$视为空格。

添加一个for循环,将MAX中没有空格(行数减少)减少到零 in&#34; printPascalRecursion(int maxRows)&#34;。

希望你得到它..

答案 1 :(得分:1)

将此方法添加到您的班级

public static void print(char c,int no){
        if(no<1)
            return;
        System.out.print(c);
        print(c,no-1);
}

当你循环第一个循环时,用参数('',row-i)调用这个方法 这至少会让它有点整洁。试验间距以获得更好的效果。

for (int i = 0; i <= maxRows; i++)
        {
            print(' ',row-i); 
            for (int j = 0; j < i; j++)
            {
                System.out.print(recrPascal(i, j) + " ");
            }
            System.out.println();

        }

同时增加

中的“”
System.out.print(recrPascal(i, j) + " ");

让它看起来更好