2015-11-23 2 views
0

Вот какой код выводит Треугольник Паскаля, и он отображает все линии треугольника. Например, если пользовательский ввод равен 5, то он будет выводиться следующим образом:Pascal Triangle - только для печати 'n'th line

1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 

Я просто хочу, чтобы он выводил последнюю строку. Так что для 5, только 1 4 6 4 1. У меня проблемы с этим, хотя это достаточно легко, я знаю. Любая помощь приветствуется.

import java.util.Scanner; 

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

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

    public static void main(String[] args) { 
     Scanner scanner = new Scanner(System.in); 
     System.out.print("Which line number of Pascal's Triangle? "); 
     int row = scanner.nextInt(); 
     System.out.print("Line " +row+" of Pascal's Triangle:\n"); 
     computeRow(row); 
    } 
} 
+1

Попробуйте положить состояние перед заявление печати. Какое условие вы бы использовали? –

+0

Я пробовал различные операторы if перед оператором печати в computeRow, но, похоже, не может найти тот, который работает по назначению. –

ответ

2

Измените метод computeRow() включать проверку на конкретной линии треугольника, который вы хотите напечатать. В вашем случае, вы только хотите напечатать последнюю строку, которая будет происходить в течение последней итерации внешнего for цикла:

public static void computeRow(int n) { 
    int counter; 
    for (int i = 0; i < n; i++) { 
     // only output the line if it be the last one 
     if (i == n-1) { 
      for (int j = 0; j <= i; j++) { 
       System.out.print(pascalValue(i, j) + " "); 
      } 
      System.out.println(); 
     } 
    } 
} 

public static void main(String[] args) { 
    computeRow(5); 
} 

Выход:

Line 5 of Pascal's Triangle: 
1 4 6 4 1 
+0

Спасибо! Это хорошо работает. Я никогда не думал об этом так. Еще раз спасибо, Тим. –

Смежные вопросы