Trójkąt pascala za pomocą pętli

0

Witam, proszę o pomoc w rozwiązaniu problemu. Dostałem zadanie na wypisanie n-tego wyrazu trójkąta Pascala w Javie. Poniżej przedstawiam mój kod, walczę z tym już od dłuższej chwili i nie mogę się z tym uporać. Widziałem na forach sposób z dwiema pętlami, ale w żadnej sposób nie mogę go zrozumieć.

import java.util.Arrays;
import java.util.Scanner;

public class Zadanie12 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Podaj ile wierszy trójkąta Pascala mam wyznaczyć:");
        int liczba = sc.nextInt();
        int tab[] = new int[liczba];
        tab[0] = 1;
        tab[tab.length-1] = 1;
        for (int i = 1; i < tab.length-1; i++)
        {
            tab[i] = tab[i-1] + tab[tab.length-1];
        }

        System.out.println(Arrays.toString(tab));
    }
}

Pierwsze 3 linie wyświetla poprawnie, z następnymi jest kłopot.

0

Na jednej jednowymiarowej tablicy tego nie zrobisz. Musisz mieć co najmniej dwie. W jednej będzie poprzedni wiersz trójkąta, w drugiej ten właśnie liczony. Czeka Cię wtedy przepisywania nowego wiersza do starego, prościej będzie zrobić tablicę dwuwymiarową.

0

Ta funkcja zwraca nty wiersz trójkąta, jako listę:

import java.util.*;

class PascalRows {

    public static List<Integer> nth_pascal_row(int n){
        List<Integer> row = new ArrayList<Integer>();
        row.add(1);
        for (int k = 0;k < n; k++)
            row.add(row.get(k) * (n - k) / (k + 1));
        return row;
    }

    public static void main(String [] args){
        System.out.println(nth_pascal_row(10));/* ->
        -> [1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]*/
        }
    };

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0