+ 1

Para que es el range(n-3) --> For that is range(n-3)

def fibonacci(n): a = 1 b = 1 if n == 1: print('0') elif n == 2: print('0', '1') else: print('0') print(a) print(b) for x in range(n-3): total = a + b b = a a = total print(total) print(fibonacci(6))

7th Aug 2022, 12:10 AM
JosuĂŠ Varela
JosuĂŠ Varela - avatar
2 Answers
+ 1
[a rough translation of my previous answer using google translate] Comprueba primero si el argumento (número de fibonacci a imprimir) dentro de la función fibonacci() es 1 o 2 o más de 2. Por ejemplo: fibonacci(1) 🔸 la primera condición es verdadera, así que imprime '0' >> 0 fibonacci(2) 🔸 segunda condición Verdadero así que imprime '0' y '1' >> 0 1 fibonacci(5) 🔸 ambas condiciones son falsas 🔸 proceder al bloque else 🔸 imprimir 0, 1, 1 consecutivamente 🔸 for x in range(n-3) también se convertirá en for x in range(2) ya que 5-3 es 2 🔸 Habrá dos iteraciones para calcular los próximos números de Fibonacci (suma del número actual y la suma anterior). >> 0 1 1 3 5 🔹 0 1 1 se imprimió manualmente y 3 5 se calculan dentro del ciclo for TIP: puede acortar este código si reemplaza el rango (n-3) con el rango (n) y reemplaza el valor de a por 0, lo que hace innecesarias las dos condiciones si elif, ya que puede hacer todos los cálculos dentro del bucle for para todos los números.
7th Aug 2022, 1:49 AM
noteve
noteve - avatar
0
It checks first if the argument (number of fibonacci to be printed) inside fibonacci() function is 1 or 2 or more than 2. For example: fibonacci(1) 🔸 first condition is True so print '0' >> 0 fibonacci(2) 🔸 second condition True so print '0' and '1' >> 0 1 fibonacci(5) 🔸 both condition is False 🔸 proceed to else block 🔸 print 0, 1, 1 consecutively 🔸 for x in range(n-3) will also become for x in range(2) since 5-3 is 2 🔸 There will be two iterations to calculate for the next fibonacci numbers (sum of the current number and previous sum). >> 0 1 1 3 5 🔹 0 1 1 was manually printed and 3 5 are calculated inside the for loop TIP: You can shorten this code if you replace the range(n-3) with range(n), and replacing the value of a to 0, thus making the two if elif conditions unnecessary, since you can make all the calculations inside the for loop for all numbers. https://code.sololearn.com/cu51HvnrEbwg/?ref=app
7th Aug 2022, 1:37 AM
noteve
noteve - avatar