Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Exibindo o triângulo de Pascal com recursão

O triângulo de Pascal é um padrão bidimensional infinito de números. A primeira linha, linha 0, contém apenas 1. Todas as outras linhas começam e terminam com um 1 também. Os outros números nessas linhas são obtidos usando esta regra: o número na posição i é a soma dos números na posição i – 1 e i na linha anterior.

Implemente a função recursiva pascalLine() que aceita um inteiro não negativo n como entrada e retorna uma lista contendo a sequência de números aparecendo na n-ésima linha do triângulo de Pascal.

>>> pascalLine(0)
[1]
>>> pascalLine(2)
[1, 2, 1]
>>> pascalLine(3)
[1, 3, 3, 1]

Este problema eu só consegui fazer o caso base:

def pascalLine(n):

   pascal = [[1],[1,1]]
   if n == 0:
       return pascal[0]
   elif n == 1:
       return pascal[1]

Poderiam ajudar?

1 resposta
solução!

Olá Edson,

Adaptando um código que eu encontrei aqui eu consegui esse resultado:

def calcula_posicao(n, k):
    if k == 0 or k == n:
        return 1
    else:
        return int(calcula_posicao(n - 1, k - 1)) + int(calcula_posicao(n - 1, k))


def pascalLine(linhas):
    linhas = linhas + 1
    triangulo = []

    for linha in range(linhas):
        valores_linha = []

        for coluna in range(linha + 1):
            valores_linha.append(calcula_posicao(linha, coluna))

        triangulo.append(valores_linha)

    return triangulo


print(pascalLine(5))

Testando:

pascalLine(2)
# Resultado:
[[1, 1]]

pascalLine(4)
# Resultado:
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]

Esse código retorna a pirâmide completa, se quiser receber apenas a linha n é só trocar o return final por return triangulo[-1]

Espero ter ajudado, qualquer dúvida é só falar!

Pesquisando na internet você pode encontar alguns exemplos bem mais diretos utilizando a fórmula abaixo, com ela você pode calcular qualquer item da pirâmide a partir da linha e coluna (n = linha, k = coluna):