+ 1
Please explain this code
def fib(n): if n == 0: return 0 elif n == 1: return 1 elif n == 2: return 1 else: return fib(n-1) + fib(n-2) print (fib(10)) Why 55?
4 Answers
+ 8
It is a recursive code for calculating the numbers of Fibonacci sequence.
fib(1)=1
fib(2)=1
fib(3)=fib(2)+fib(1)=1+1=2
fib(4)=fib(3)+fib(2)=2+1=3
fib(5)=fib(4)+fib(3)=3+2=5
fib(6)=fib(5)+fib(4)=5+3=8
fib(7)=fib(6)+fib(5)=8+5=13
fib(8)=fib(7)+fib(6)=13+8=21
fib(9)=fib(8)+fib(7)=21+13=34
fib(10)=fib(9)+fib(8)=34+21=55
+ 3
You probably know the fibonacci sequence: 1, 1, 2, 3, 5, 8...
The formula to the nth number is:
an = a(n - 1) + a(n - 2).
It does the same: It returns the formula if it isn't 1 or 2, the other ones are predefined values.
Let's say you want the 3rd element. You get fib(n - 1) and fib(n - 2), which are both one, and 1 + 1 is 2. If you want the 4th number, you get fib(2) and fib(3). fib(2) is 1, and fib(3) is calculated like above, so it's 2 + 1, which is 3.
You can calculate it up to 10
+ 2
fib is a recursive function which can call itself.
when you call 'fib(10)' the function will be called 2 more times once with the value 9 (10-1) and 8 (10-2), which will call themself until the number 0, 1 or 2 are reached.
step by step:
fib(10)
fib(9) + fib(8)
(fib(8) + fib(7)) + (fib(7) + fib(6))
(fib(7) + fib(6) + (fib(6) + fib(5)) + (fib(6) + fib(5)) + (fib(5) + fib(4))
(fib(6) + fib(5)) + (fib(5) + fib(4)) + (fib(5) + fib(4)) + (fib(4) + fib(3)) + (fib(5) + fib(4)) + (fib(4) + fib(3)) + (fib(4) + fib(3)) + (fib(3) + fib(2))
... (this is getting quite enoying... đ
đ
)
+ 1
thaks