MIT 6.00 Intro Computer Science (OCW) OpenStudy (anonymous):

hi, i understand how fibonacci number works but i don't understand the coding part of it. can someone please explain it to me? OpenStudy (anonymous):

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? OpenStudy (anonymous):

i'm looking at the function but can't figure out what it does OpenStudy (anonymous):

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) OpenStudy (anonymous):

yes OpenStudy (anonymous):

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. OpenStudy (anonymous):

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 OpenStudy (anonymous):

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. OpenStudy (anonymous):

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. OpenStudy (anonymous):

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)] OpenStudy (anonymous):

Exactly. Well done.

Latest Questions n32carrillo: i need help
4 minutes ago 4 Replies 0 Medals MiamiHeat23: Can anyone help me wit Latex? or bb code
10 seconds ago 65 Replies 2 Medals Adrianamak: Bottles of wine are stacked in racks of 12. The weights of these bottles are normally distributed with mean 1.
39 minutes ago 0 Replies 0 Medals Speedy: How is everyone im new :) i just seeing what this is
41 minutes ago 28 Replies 2 Medals Kaloy69: Oral communication in context
40 minutes ago 2 Replies 0 Medals hiiiihiiiiiiiiii: Tell me what you thank I wht it by myself hope you like it When I look in your eyes all I want to do is cry ya ya when I see you all i wanna do is cry when
59 minutes ago 14 Replies 1 Medal jhonyy9: Hi math fun's ! please opinions about this : than i can prove that always there e
1 hour ago 1 Reply 2 Medals TrumpPence2020: What engines are compatible with the 1995 Ford Bronco?
1 hour ago 10 Replies 3 Medals Timmyspu: Thank you for all that showed up for question cove game night.
35 minutes ago 14 Replies 3 Medals eelyaK11: A NASA spacecraft once landed on the surface of the asteroid named 433 Eros.This asteroid is near Earth and has an average orbital speed of 24.
2 hours ago 10 Replies 1 Medal