anderson chaparro
Pregunta¿por que usa un diccionario y no una lista?

Eber Laurente Lliuyacc
Es un buen cuestionamiento. según https://stackoverrun.com/es/q/4342696 para esta aplicación no debería haber problemas en usar uno u otro. Pero en los caso en que se requiera que los indicadores no tengan que tener una secuencia ordenada (como en las listas 0, 1, 2, 3, ..., n) es donde se debe utilizar los diccionarios

Angel Solis
Sí es posible usar una lista, pero es más intuitivo usar diccionarios. Porque en un diccionario no hay indices, sólo llaves. Si yo quisiera acceder al resultado de fibonacci de 2; que és donde aplica la exepción por última vez (fib1 + fib1 = 2), no puedo usar
memo[n]
memo[0]
memo[n - 2]
def fibonacci_dinamico_listas(n, memo = []): if n == 0 or n == 1: return 1 try: return memo[n - 2] except IndexError: resultado =fibonacci_dinamico(n - 1, memo) + fibonacci_dinamico(n - 2, memo) memo.append(resultado) #print(f'n: {n}, resultado: {resultado}, memo: {memo}, index: {memo.index(resultado)}') return resultado
def fibonacci_dinamico_dict(n, memo = {}): if n == 0 or n == 1: return 1 try: return memo[n] except KeyError: resultado =fibonacci_dinamico(n - 1, memo) + fibonacci_dinamico(n - 2, memo) memo[n] = resultado return resultado