Паскаль Треугольник Рекурсия Java - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь создать программу, которая будет рассчитывать треугольник Паскаля, и я искал несколько примеров, и я нашел этот.Но я не очень понимаю, как работает метод Паскаля.Но все остальное имеет смысл.

import java.util.Scanner;
public class Pascal {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Enter the number of rows to print: ");
    int rows = scanner.nextInt();
    System.out.println("Pascal Triangle:");
    print(rows);
    scanner.close();
  }

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

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

1 Ответ

0 голосов
/ 12 октября 2018

См. Комментарии для некоторых разъяснений:

  public static void print(int n) {

    for (int i = 0; i < n; i++) { //iterate over 0 - (n-1) rows 
      for (int j = 0; j <= i; j++) {  //iterate over 0 - i columns, so 1 line 
                                      //will have 1 columns second line 2 columns..

        System.out.print(pascal(i, j) + " "); //print column value and space 
      }
      System.out.println();
    }
  }

  //return the value of row i, col j 
  public static int pascal(int i, int j) {
    if ((j == 0) || (j == i)) { //value of first or last column is 1 
      return 1;
    } else {//value of other columns is the sum of two values of previous row 
      return pascal(i - 1, j - 1) + pascal(i - 1, j);
    }
  }
...