30th Jan 2021, 5:25 PM
Sp3kTr0👻
Sp3kTr0👻 - avatar
6 Réponses
0
First of all, the program seems to be deliberately designed to be confusing. It is also wrong. fib(0) should be 0. The else block is not needed and it can even be simplified and corrected as: def fib(x): return fib(x-1) + fib(x-2) if x > 1 else x So let me explain the program now. A Fibonacci sequence is an integer sequence where the first two terms are 0 and 1. Consequent terms are calculated by adding the last two terms. 0, 1, 1, 2, 3, 5, 8, 13, 21, ... The nth term, fib(n) is defined as follows if n = 0, fib(n) is 0 if n = 1, fib(n) is 1 else, fib(n) is fib(n-2) + fib(n-1) To make it easier to implement we can say, if n > 1, fib(n) is fib(n-2) + fib(n-1) else fib(n) is n. Hence my code: def fib(n): return fib(n-1) + fib(n-2) if n > 1 else n Note that fib is a function that calls itself. Such a function is called recursive function. Note that fib(n) will always return the same result for the same value of n and fib(n) does not cause side effects. Therefore, fib is a pure function.
30th Jan 2021, 6:37 PM
Ore
Ore - avatar
+ 1
follow this video, it's perfectly explained there: https://www.youtube.com/watch?v=dxyYP3BSdcQ
30th Jan 2021, 6:13 PM
minirkk
minirkk - avatar
+ 1
so let's do that with a given n : fib(4) - > fib(3) + fib(2) - > (fib(2)+fib(0)) + (fib(1)+fib(0)) == 5 with fib(2)== 2 and fib(1)== 1 and fib(0)==1. thanks Ore it's clear now.
30th Jan 2021, 6:58 PM
Sp3kTr0👻
Sp3kTr0👻 - avatar
+ 1
Sp3kTr0👻 Yes. You got it. I am happy that my answer helped.
30th Jan 2021, 8:12 PM
Ore
Ore - avatar
0
RKK I want only the explanation of that example.
30th Jan 2021, 6:21 PM
Sp3kTr0👻
Sp3kTr0👻 - avatar
0
RKK thanks anyway bro.
30th Jan 2021, 6:26 PM
Sp3kTr0👻
Sp3kTr0👻 - avatar