2014-11-05 50 views
1

到目前爲止,我有這個,但我不太確定printPTriangle如何使用代碼打印三角形。如果有人能幫我解決這個問題,我會很感激。印刷帕斯卡三角形(遞歸)(JAVA)

public static int factorial(int n) { 
    if (n == 1) { 
     return 1; 
    } 
    return n * (factorial(n - 1)); 
} 

public static int pascalsNumber(int x, int y) { 
    return factorial(x)/(factorial(y) * factorial((x - y))); //Using combinations formula 
} 

public static void printPTriangle(int z) { 



} 

回答

0

嘗試此,

public class PascalTriangle { 

public static void main(String[] args) { 

    int rows = 10; 


    for(int i =0;i<rows;i++) { 
     int number = 1; 
     System.out.format("%"+(rows-i)*2+"s",""); 
     for(int j=0;j<=i;j++) { 
      System.out.format("%4d",number); 
      number = number * (i - j)/(j + 1); 

     } 
     System.out.println(); 
    } 

} 
} 

注意上述用於創建一個很好的格式化三角形的格式化命令。 %4d指示格式化程序在4個空格內打印數字。

+0

感謝那些工作得非常好 – XxRUSxX 2014-11-05 21:53:15

1

我也是Java的初學者,並且在Pascals三角形上工作。我喜歡上面指出的格式,並將其引入我的代碼中。爲了解釋更大的三角形,我將間距調整得稍大一些。

進口java.util.Scanner的;

public class Pascal { 

    public static void main(String[] args) { 

     Scanner scanner = new Scanner(System.in); 
     System.out.print("Enter the row number up to which Pascal's triangle has to be printed: "); 
     int row = scanner.nextInt(); 
     print(row); 

     scanner.close(); 
    } 

    public static void print(int n) { 
     for (int i = 0; i < n; i++) { 
      System.out.format("%"+(n-i)*3+"s",""); 
      for (int j = 0; j <= i; j++) { 
       System.out.format("%6d",(pascal(i, j))); 
      } 
      System.out.println(); 
     } 
    } 

    public static int pascal(int i, int j) { 
     if (j == 0) { 
      return 1; 
     } else if (j == i) { 
      return 1; 
     } else { 
      return pascal(i - 1, j - 1) + pascal(i - 1, j); 
     } 

    } 

} 
0

這裏是解決方案:

public static void main(String[] args) 
{ 
    pascal(1,10); 
} 
static int pascal(int start, int end) 
{ 
    if(start>=end) 
     return 0; 
    int number = 1; 
    System.out.format("%"+(end-start)*2+"s",""); 
    pascal2(start,number,0); 
    System.out.println(); 
    return pascal(start+1,end); 
} 
static int pascal2(int start,int number,int end) 
{ 
    if(end>start) 
     return 1; 
    System.out.format("%4d",number); 
    return pascal2(start,number * (start - end)/(end + 1),end+1); 
} 
+0

代碼的一些解釋會一直不錯。 – 2017-10-17 19:27:18