hi, i understand how fibonacci number works but i don't understand the coding part of it. can someone please explain it to me?
Do you mean you need help with how to build the function, or you're looking at the function on a handout and you need help figuring out what it does?
i'm looking at the function but can't figure out what it does
This one? def fib(x): """Return fibonacci of x, where x is a non-negative int""" if x == 0 or x == 1: return 1 else: return fib(x-1) + fib(x-2)
yes
well, the first part is easy. the line: if x == 0 or x == 1: return 1 checks to see if x is 0 or 1 if x isn't 0 or 1, the next line returns fib(x-1) + fib(x-2) fib(x-1) is going to go through the same process. If (x-1) is greater than 1, THAT will also get sent to fib. But eventually fib(x-1) will return an integer. When it does, the program will start to evaluate fib(x-2) the same way. when fib(x-2) returns an integer, the problem becomes simple addition.
when you say "If (x-1) is greater than 1, THAT will also get sent to fib" does that mean the function will go through fib(x-1) then fib((x-1)-1 then fib(((x-1)-1)-1) and so on also when will fib(x-1) return an integer? i thought fib(x-1) will always be an integer
when you say "If (x-1) is greater than 1, THAT will also get sent to fib" does that mean the function will go through fib(x-1) then fib((x-1)-1 then fib(((x-1)-1)-1) and so on Exactly, UNTIL one of those (x-an accumulating number of ones) terms is in the base case, that is, when the line that says if x == 0 or x == 1: return 1 is true, the function will stop calling fib(x-whatever) and will just return 1 also when will fib(x-1) return an integer? i thought fib(x-1) will always be an integer Instead of fib(x-1) think of it as 'the integer that gets returned when fib(x-1) is finished being evaluated' So it is an integer, but it takes some time (the time to evauate fib(x-1)) to figutre out what the integer is.
One way to see this is to consider x = 2. Since x is not 1, the function computes fib(1) + fib(0). But those two values are known to be 1, so the answer is 1+1 = 2. Now consider x = 3. Since x is not 1, the function computes fib(2) + fib(1). fib(2) expands to fib(1) + fib(0), so the answer is 1+1+1 = 3. And so on.
thanks! i think i got so lets say x = 4 fib(4) = fib(3) + fib(2) = [fib(2) + fib(1)] + [fib(1) + fib(0)] =[fib(1) + fib(0) + fib(1)] + [fib(1) + fib(0)]
Exactly. Well done.
Join our real-time social learning platform and learn together with your friends!