Thank you! I have been puzzling over how this works for 2 days. Khan Academy always delivers a clear and completely understandable explanation. Mainly by use of colors and not skipping a single step.
This is the ONLY clear, clean, and thorough explanation of this algorithm, that I've found, on youtube or EdX. Thanks a million. You make it a good thing to shout KHAAAAAAAAAAAAAAN!!!
I have been going over the recursive solution of the Fibonacci sequence for a day now and I couldn't figure it out , this explanation was clear and concise and I finally understood what is happening under the hood. Thank you so much.
Wow! This guy knows so much about so many things. I am truly impressed! Khan, you are a lifesaver! Watched your videos for almost every AP class that I took in High School. Now I am in college and still keep watching your videos cuz they are really helpful!
Amazing explanation Sal. I have looked through many videos that explained how to trace a recursive function with two calls in one method, and this one really takes the cake.
I went over my class notes on recursion several times and it just wasn't clicking, then 2:08 minutes into this video I suddenly get it like its as simple as 2+2. You are a skilled teacher and a gift to the world
The mind bending thing about writing recursive code is the realization that all you’re doing is writing one function that returns a second function. The eureka moment comes when you realize that the second function could be anything, and in this case it is the starting function, perhaps with an algorithmically deprecated or advanced parameter. Then those base cases just show up to stop the code from running ‘forever’ (i.e. until your processor crashes). In a way, recursion is a way of nesting functions, and sure the values at each step have to be stored on the stack and there’s a whole bunch of clever stuff happening in the background, but essentially a recursion is when you write a program that calls itself later, in effect allowing you to build a loop of functions. I can totally see how this would be useful for generating trees and other linked data structures. Thanks for the explanation, Sal! When I was first exposed to recursive code in my freshman year, I didn’t understand it and I failed to see the relevance but now it seems more natural. Kudos to you sir, learning never stops!
amazing, for 9 years this video has been granting clarification to aspiring programmers. I am learning how to use caching and hashtables to reduce the time complexity of this function but did not fully understand how the naive solution worked and how the stack handles all of the returned values and how they are actually added. this makes so much sense now, THANKS. "The cobwebs are now removed" - artie bucco (anyone who gets this reference gets a like)
It´s funny what you are saying, because currently the software development industry is full of "programmers" which lack of fundamentals and propper preparation.
Actually, when solving the fibonacci problem - or more importantly recursive problems in general - we don't think in this way at all. We think about it in a pretty much mathematical way and apply the "recursive leap of faith"; that is, we assume that it works, ignore all the fuzzy details and let the computer deal with those. We only focus at one single level of computation; if we have found the base cases, have managed to break down the problem into smaller instances of the same form, solved those and combined them, then the algorithm will simply work. Perhaps you meant this. :)
@@csnick248 yes but imagine this, what if they ask you the runtime of this problem? How are you going to calculate the steps this function takes? You need a deeper understanding of computer's control flow to calculate that (big O)
This is very clean and clear to visualize. Our mind do not work on numbers/text, it works on visualizations/images This how we would be thing about recursion in our mind. Thanks a lot for understanding our mind & making us understand too....
I did try to understand this for almost an hour. Not for this video, I really don't know how much more time was needed to figure this out. This explanation will further help me to unpack other programming aspects. Thanks a lot.
Man I wished I watched this video before doing my coding assignment, but I’m still glad I watched it because i was not able to figure it out during my assignment, and it bothered me so much afterwards. Can’t believe I never understood how Fibonacci works until now, good video 👍
Omg , I was seriously baffled with recursive function's backend process since last few days and finally my doubt is (I think) clear ,basically it remembers the values in a stack and processes step by step. Now hopefully I'll be able to solve a similar recursive question.Thanks khanacademy
WoW.... I promise you once I become a software engineer, I will donate half of my first salary to khan academy and that's a promise. You really are changing lives.
Awesome Stuff.. Most clear as mentioned by others.. took me around 10 videos to land here... was not able to understand the concept ... Thanks Team ... Stay blessed.
Note: The fifth number in the Fibonacci sequence is 5. It's is coincidence that the 5th number is 5. The 6th number in the sequence is 8. Because adding the 4th value (3) and 5th value (5) results in 8 (the sixth value).
thank you very clear explanation you have a gift, man what a talent you have thank you for taking the time to do this, its helping so many out there i do believe.
Compilers are used to interpret computer language (english word commands) into machine language (binary language such as 010101). Machine language are what processors use to carry out what you want. A compiler takes some function, and converts it to machine language.
I think it was helpful to know that the Fibonacci sequence is computed by looking at the previous two numbers and adding them. This recursive statement works by subtracting each number from the one before, and two before and adding them together. Tracing the steps was very useful though
I have been trying to find something that actually explains how recursion works. In this case using a fibonacci sequence, it is clearly explained. I had been thinking about it all wrong - It was the tree structure that helped me understand it once and for all. Chat GPT and BARD were no help at all. I am now smarter than I was 8 minutes ago.