Red de conocimiento informático - Computadora portátil - (programación en Python) Utilice la función para generar la secuencia de Fibonacci: [-1, -1, -2, -3, -5, -8, -13, -21, -34, -55] (agregado a lista)?

(programación en Python) Utilice la función para generar la secuencia de Fibonacci: [-1, -1, -2, -3, -5, -8, -13, -21, -34, -55] (agregado a lista)?

Mire que la complejidad de su código recursivo es O (2 ^ n), mientras que la complejidad del segundo es O (n). La eficiencia operativa es, por supuesto, diferente. >

def fibn(n):

CONTADOR global

CONTADOR = 1

si n == 0:

regresar 1

elif n == 1:

devolver 1

else:

devolver fibn(n-1) fibn(n- 2)

estadísticas = []

para i en el rango(35):

CONTADOR = 0

fibn(i 1)

estadísticas.append(((i 1), COUNTER))

imprimir estadísticas[(1, 1), (2, 3), (3, 5), (4 , 9), ( 5, 15), (6, 25), (7, 41), (8, 67), (9, 109), (10, 177), (11, 287), (12, 465 ), (13, 753), (14, 1219), (15, 1973), (16, 3193), (17, 5167), (18, 8361), (19, 13529), (20, 21891), (21, 35421), (22, 57313), (23, 92735), (24, 150049), (25, 242785), (26, 392835), (27, 635621), (28, 1028457), (29 , 1664079), (30, 2692537), (31, 4356617), (32, 7049155), (33, 11405773), (34, 18454929), (35, 29860703)] hizo un cProfile simple de importación de perfiles

importar pstats

def fibn(n):

si n == 0:

devolver 1

elif n == 1:

devolver 1

más:

devolver fibn(n-1) fibn(n-2)

imprimir ' i , llamadas, tiempo'

para i en el rango(50):

pr = cProfile.Profile()

pr.enable()

fibn(i)

pr.disable()

stats = pstats.Stats(pr)

stats.strip_dirs()

punto =

stats.stats[('test1.py', 3, 'fibn')]

imprimir '3d, 10d, 8f' (i, st[1], st[3])

i, llamadas, hora 0, 1, 0.000000 1, 1, 0.000001 2, 3, 0.000003 3, 5, 0.000005 4, 9, 0.000008 5, 15, 0.000012 6, 25, 0.000020 7, 41, 0,000033 8, 67, 0,000165 9, 109, 0,000088 10, 177, 0,000141 11, 287, 0,000228 12, 465, 0,000450 13, 753, 0,000601 14, 1219, 0,001016 5, 1973, 0,003561 16, 3193, 0,002593 17, 5167, 0,004372 18 , 8361, 0,007097 19, 13529, 0,011073 20, 21891, 0,018552 21, 35421, 0,032467 22, 57313, 0,051762 23, 92735, 0,095383 24, 50 049, 0,133490 25, 242785, 0,212390 26, 392835, 0,352861 27, 635621, 0,578204 28, 1028457, 0,987839 29, 1664079, 1,506812 30, 2692537, 2,682802 31, 4356617, 3,998936 32, 7049155, 8,089419 33, , 13 .058235 34, 18454929, 23.930004 35, 29860703, 36.503880 Se necesitan dos semanas para calcular fibn( 50) mediante inspección visual