*My takeaways:* 1. What is recursion in the context of this lecture 3:47 2. An example: multiplication - iterative solution vs recursive solution 5:48 3. Recursion with one base case - factorial 9:25 4. Recursion with multiple base cases - Fibonacci numbers 24:38 4. Recursion on non-numerics 29:12 5. Dictionaries (mutable data structure contains "keys" and corresponding "values", it has no order, only matches "keys" to "values") 33:27 6. Key things about keys and values 39:10 7. List vs dictionaries 40:20 8. An example of using dictionaries 40:45 9. Efficient Fibonacci 46:18
@emmaguo6194 жыл бұрын
Thank you so much! Ignore the racist!
@leixun4 жыл бұрын
Emma Go thank you so much!
@stephfong45777 жыл бұрын
Prof. Grimson should teach Introduction to Algorithms. He is clear and articulate.
@MrFaiqueShakil4 жыл бұрын
@@charge2snglrty409 kya hagg raha hai , har jagah...?
@Tintak_hatpin4 жыл бұрын
@@MrFaiqueShakil hahaha
@peterpace33794 жыл бұрын
@@charge2snglrty409 Nahi bhai ye sab to nursery ke bachhe padhte hai -_-
@snamburi34 жыл бұрын
he teaches Intro to Computer Science and Programming course on EdX. It covers a few algorithms
@鄭心和4 жыл бұрын
pre labeling 0:00:00 0:02:31 0:04:00 What is Recursion 0:05:58 Iterative algorithm so far 0:05:58 Multiplication iterative solution 0:07:56 0:09:49 Factorial 0:12:03 Recursive function scope example 0:13:46 Some observation 0:16:07 0:18:03 Example of induction 0:19:44 0:23:12 Hanoi tower 0:24:56 Recursion with multiple base cases 0:26:14 Fibonacci 0:28:06 0:30:23 Solving recursively 0:33:52 How to store student info 0:35:45 0:36:00 0:38:00 0:40:25 Dict v.s. List 0:41:52 Creating a dictionary 0:43:02 0:44:16 0:45:16 0:46:25
@djangoworldwide79252 жыл бұрын
What about ana jokes?
@ali517175 жыл бұрын
After this Lecture, I understand 2 things, Recursion and Why MIT is rated 1st in the world in Electrical engineering and computer science
@wanyinleung9125 жыл бұрын
And the third thing is all cs jokes are bad.
@gold99944 жыл бұрын
@@charge2snglrty409 I did, because back in my first year, i skipped a lot of csc class in mit (even though I took Chemistry). My laptop was (and still) a gaming laptop, It's not convenient to bring it everywhere.
@bee_irl4 жыл бұрын
34:13 is why MIT is on top. B is a failing grade, sorry, Ana.
@cybern9ne3 жыл бұрын
I went to WVU. I learned the same subjects. It's not the material it's the student.
@changding43553 жыл бұрын
Nope, I'm from Berkeley EECS, I disagree with your second thing.
@genealso67266 жыл бұрын
People like this should open their own school. Truly amazing professor, no wonder CS grads from MIT are so talented.
@shaileshrana71654 жыл бұрын
More than what he taught, I loved how articulate and sure he was. Every word seemed measured. Lucky to get to experience this. Thank you MIT.
@DanielFerreira-gu1di7 жыл бұрын
The way he teachs is awesome. Fun + Good Content!
@cryptonetcentralusa55925 жыл бұрын
Prof. Grimson is one of my very best teachers! I've taken his Intro to Computer Science and Programming course on EdX and it was great! All his lectures here on KZbin are great, too! Thank you Professor and MIT!
@craigdanielmaceacher3 жыл бұрын
If you are having trouble with recursion, don't worry most people have trouble with it--look up explanations from several sources besides this one, and one particular metaphor or walkthrough will eventually give you that a-ha moment where you now intuitively understand it. I didn't think he explained recursion well here, from point of view of someone without a science/math background; it wasn't until I researched it myself and watched videos showing how it worked graphically/metaphorically that I then understood it. TLDR: search of many recursion explained videos on YT, there's tons, and one of them will eventually click!
@ChandravijayAgrawal3 жыл бұрын
He is narendra modi, what could you expect
@theLowestPointInMyLife2 жыл бұрын
I agree, i already knew recursion and i didnt think this was explained well at all.
@akshaykumart.r.3523 Жыл бұрын
@@ChandravijayAgrawal
@simenghan58977 жыл бұрын
The part linking mathematical induction to recursion is genius. Thank you so much!
@陳矩翰4 жыл бұрын
So even professors at MIT would first just run the exact same program again without changing anything when they meet a bug lol
@georgikostov69823 жыл бұрын
This one is a bit not sure if it works or not ... I guess he losted already.
@obli89843 жыл бұрын
that's what I also thought😀
@peasant72143 жыл бұрын
Thanks to Mr. Chinese guy pre labeling 0:00:00 0:02:31 0:04:00 What is Recursion 0:05:58 Iterative algorithm so far 0:05:58 Multiplication iterative solution 0:07:56 0:09:49 Factorial 0:12:03 Recursive function scope example 0:13:46 Some observation 0:16:07 0:18:03 Example of induction 0:19:44 0:23:12 Hanoi tower 0:24:56 Recursion with multiple base cases 0:26:14 Fibonacci 0:28:06 0:30:23 Solving recursively 0:33:52 How to store student info 0:35:45 0:36:00 0:38:00 0:40:25 Dict v.s. List 0:41:52 Creating a dictionary 0:43:02 0:44:16 0:45:16 0:46:25
@ucanhly11662 жыл бұрын
I'm from Vietnam and live in hanoi but I've never heard about that story. It's really interesting.Thank for your dedicating lecture.
@andycalderon84227 жыл бұрын
This teacher was my first intro to python on Edx. He's awesome.
@hdsmsmart4 жыл бұрын
which course is it ?
@محمدمصطفى-س9ع2 жыл бұрын
@@hdsmsmart the same course but on mit platforme
@kevin_mitchell4 жыл бұрын
The lecture states: "With n = 34: 11+ million calls with original fibonacci code, and 65 calls with the efficient dictionary code/" I'm teaching myself c++ and learning recursion (and a little bit of python as well) with this lecture. The version below, without the "efficient dictionary code" does it with 35 calls: def fib(n, temp=1, first=1, next=2): if n == 0: return temp return fib(n-1, first, next, first+next) print(fib(34))
@fckthosealltrades8493 жыл бұрын
NICE
@surajjain71192 жыл бұрын
How is it going kevin ?
@stephenc93986 жыл бұрын
Great teacher but missed a great opportunity to use my favourite computer science joke: In order to understand recursion, one must first understand recursion.
@RocknRollDina4 жыл бұрын
because its not a funny "joke"
@stephenc93984 жыл бұрын
@@RocknRollDina You are a funny joke
@RocknRollDina4 жыл бұрын
@@stephenc9398 No I'm not, actually. Try again. You're bad at insults also.
@federicofraguglia67734 жыл бұрын
Don't listen to them... I found this joke amusing.
@Raghav12054 жыл бұрын
Because there is no base case
@D_Analyst0072 жыл бұрын
I have seen many tower of hanoi and recursion videos, this one is just jewel! MIT has awesome teachers for any field! Prof Gilbert strang, John Tsitsiklis etc..
@mouleeswarkothandaraman70953 жыл бұрын
I finally found my base case for understanding recursion after searching recursively :)
@12EdinAb Жыл бұрын
i see what u did there
@ramazanaktas36995 жыл бұрын
About the game around 21:00 ; while moving around, there should be no greater disc *above* any disc, otherwise it is utterly simple: start to move from the smallest to spare, move the largest to the target destination and move the rest in the same fashion you did.
@androtech78854 жыл бұрын
The last two codes went over my head.
@scorpio197711113 жыл бұрын
The clarity with which recursion was taught in this lecture, was blinding.
@Nevarek_3 жыл бұрын
Just as a head's up, the recursive algorithm here is known as a head recursion algorithm, which requires a larger space complexity than a tail recursion algorithm. Searching for tail recursion will teach you how to write/rewrite the same algorithm and will remove the necessity to use O(N) stack space. You can see something similar being done using a dictionary to cache return values. And to answer "who cares", embedded and real-time systems programmers care. Game development cares about performance constantly. What he really should have said is "how badly do you need it to be optimized". And he's right, in most cases you won't ever have to care, but you also need to know what happens when you do.
@Camelold Жыл бұрын
Really really explanation of recursive. This is the best explanation I ever see. The math induction makes it even clearer and more interesting. And I enjoyed all the jokes.
@xXZian6Xx4 жыл бұрын
For all my life, I have never found a lecturer this good.
@TheVertical924 жыл бұрын
check out CS50 from Havard.
@kenmeyer1004 жыл бұрын
then you haven't met Grant Sanderson (3blue1brown on youtube)
@xXZian6Xx4 жыл бұрын
@@kenmeyer100 i have, Grant is good at visualizing things, but not so much on explaining it like this prof
@boysen01 Жыл бұрын
Great material and a very good intro to recursion. Beware of typo in palindrome at 31:08
@shreyapatel41276 жыл бұрын
He is utterly crystal clear in what he says. Wow!
@yukeyang57356 жыл бұрын
Can't help applaud for the professor as he finished explaining the Hanna Tower problem.Brilliant!
@vu_derArchitekt6 жыл бұрын
Hanoi Tower not Hanna :)
@yukeyang57356 жыл бұрын
You're right.Thanks for the correction.
@Mmmkay..2 жыл бұрын
This professor's sense of humor is top shelf lol
@manishahatzade10067 жыл бұрын
Thank you Professor! Thank you MIT, I saw many youtube vids to understand recursion but this was the best explaination.
@AnmolKumar-dh3lh2 жыл бұрын
Thank you teacher! I am grateful for all the efforts you took to prepare all the material for this class.
@pfever4 жыл бұрын
At MIT they teach new concepts introducing formal definitions followed by mathematical examples. At Stanford the introduce concepts first with easy to understand definitions or analogies and later reinforce the concepts with tons of practical examples.
@hassanmohammed9957 жыл бұрын
thank you MIT, god will bless you.
@philippbecker31177 жыл бұрын
Please keep your superstition for yourself.
@AliM-qr8lq5 жыл бұрын
@@philippbecker3117 do u feel depressed ? i can tell why..
@pidusredlah2 жыл бұрын
This guy is so hilariously good. Understandable, given MIT.
@RandomShowerThoughts2 жыл бұрын
this professor is insanely good at what he does
@Rogues4Ever4 жыл бұрын
Best explanation of recursion I have watched to date. Thank you sir!
@FINSuojeluskunta4 жыл бұрын
I've always struggled with recursion besides the simple ones. Hopefully this makes it easier in the future
@julio11483 жыл бұрын
I want this man's presentation skills/confidence
@broswhoknowstuff3 жыл бұрын
On the fib(x) function for rabbits: def fib(x): if x == 0 or x == 1: return 1 else: fib1 = fib(x-1) fib2 = fib(x-2) return fib1 + fib2 print(fib(0)) // expected 0 I'm sure there is a cleaner way.
@aadway7 жыл бұрын
I always knew Narendra Modi was a coder in dark.
@nikhil20217 жыл бұрын
LMAO!
@soumadip_banerjee7 жыл бұрын
Lol
@yashika27015 жыл бұрын
Lmao
@Krimson5pride5 жыл бұрын
best comment here
@aryamahima35 жыл бұрын
😂😂😂
@chilily9013 жыл бұрын
"after several months, you get to Australia" LOL. Fun and great Professor. Thank you sir!
@spyinsecret00753 жыл бұрын
I love the professor way of teaching!
@hasantaz78323 жыл бұрын
Nah man this guy Is undefeated. Too good.
@NoName-ef2gv4 жыл бұрын
Does anyone else have the same trouble understanding the Hanoi code at 23:13?
@abdimajid994 жыл бұрын
Me too bro, i couldn't get it
@sibunhill6 жыл бұрын
Ran into a issue when a supplied argument is zero in both of the first two examples since they only evaluate 1 as the base case. I modified the code and the following seems to work properly. def multiply(a, b): '''Returns a multiplied by b''' if b > 0: return a + multiply(a, b - 1) else: return 0 def factorial(n): '''Returns the factorial of n''' if n > 0: return n * factorial(n - 1) else: return 1
@ParsaNaderiX2 ай бұрын
What an episode! 🔥
@broswhoknowstuff3 жыл бұрын
Would inclusion in the lecture of the 'call stack' or Python's symbol table concept help explain recursion? As you recursively call the function object's return value, the frames get 'popped' off the stack (symbol table on Python I think?) Sorry, self-taught. Still learning every day.
@darshanpatil68922 жыл бұрын
I loved that the recursion Fibonacci code(inefficient one) has some flaws for its optimization but I couldn't understand how the modified dictionary becomes the argument for the fibo_efficient(n, d) I mean we modified 'd' but was already given to the fibo_efficient(n, d) as it's an argument? 46:40
@user-nq5wb1cz5e7 жыл бұрын
Great professor
@alinaust24527 жыл бұрын
This is the clearest explanation I came across! Thanks so much!
@yourduck5 жыл бұрын
I'm a little confused on one point. I understand recursion, but from what I am reading online, most of the time it is more efficient in terms of processing times to write code using an iteration than a recursion. I get that some people might find one more readable than the other and that for many programs, most users wouldn't notice a difference, but wouldn't it be a best practice to normally iterate to make code as efficient as possible?
@jh07206 жыл бұрын
46:58 so what if you want fib_efficient(0, d)?
@ali517175 жыл бұрын
infinite loop error basically, you can add 0:0 to the dictionary as the base case instead of the 2:2 or make them 3 if you have enough bytes on your storage
@Zedprice5 жыл бұрын
This guy's explanations don't actually make sense to me. He gets to the exact point where I don't quite get what's happening, and goes "And that's why this works." And I'm like, NO YOU HAVE NOT ACTUALLY EXPLAINED WHY THE RECURSION WORKS IN THIS INSTANCE. He needs to keep going and break it down, but he keeps rushing ahead instead because he has other stuff he apparently wants to talk about. I don't understand his towers of Hanoi code. I don't understand his Fibonacci code. I don't understand the palindrome code. Each time because he just abruptly stops once he reaches the recursion.
@theodenednew88745 жыл бұрын
Zed I was reading these comments and wondering why the hell everyone was applauding this guy for the same reasons you stated. With Ana I felt like she was talking to anyone. She was very easy to understand. This guy on the otherhand, makes me feel like he’s only talking to MIT students. I had to rewatch this multiple times lol
@ChiNguyen-bc4kt4 жыл бұрын
In his Towers of Hanoi code, I can figure out the process when n==1 and n==2, but I can't figure out steps in the process when n==3 or more. I think he wants us to think of it recursively: if it is true for smaller versions of the problem, then it is true for the bigger version of the problem and the code turns out to be true when n==3
@ChiNguyen-bc4kt4 жыл бұрын
@Ken MacDonald Yeah I know but as n goes up, there will be hundreds of steps. So do they recurse on the other because the same rules still applied?
@hamzafarooq78647 жыл бұрын
Thanks ...content is superb...Recursion is explained in a brilliant way.
@iphoneultra7 жыл бұрын
thank you MIT
@TheDoomCompany Жыл бұрын
Hard ass concepts fr
@DingusKhan423 жыл бұрын
Excellent lecture and lecturer. Thanks for posting this.
@RyanScarbrough Жыл бұрын
Complex yet really well explained, thanks!
@kennethkimani76742 жыл бұрын
this lecture was pretty fun
@爱学习-s6k3 жыл бұрын
But I am tenured, you could not do a damn thing about it. LOL, that punchline is fire! Love this professor.
@user__unknown Жыл бұрын
Fibonacci -> 24:45
@sujaysyal2 жыл бұрын
They did him dirty at 16:53
@petervan73723 жыл бұрын
just learned another polish contribution to cs “how many twists does it take to screw in a light bulb”, apart from polish notation
@infinitasfish54992 жыл бұрын
Very entertaining and clear at the same time )
@robinsir Жыл бұрын
Acronyms like PHP are also recursive!
@sumeetbansal35525 жыл бұрын
he really understands what a student is going through.
@tamojitbasu86344 жыл бұрын
As compared to our country where professors or teachers in high schools give a shit about what a student have learnt and what a student is going through except few student friendly teachers and professors. Foreign professors and teachers takes care about every students whether academically poor or brilliant and guides them in a friendly manner which encourages students to learn in a fascinating and practical approach. In our country they give notes writes bullshit on boards copy them and paste it on your exams except few good indian professors and teachers. Even when a student fails foreign professors helps them pointing out his weakness and helps to strong them in a beautiful way and then there's our country if anyone fails they humiliate the student in front of entire class starting from schools to colleges. Sad reality of Indian education system😔
@nup_pun7 жыл бұрын
Small typo in slide 38 at 31:00 ; "leba" instead of "elba" was written in the condensed string.
@Cashman91116 жыл бұрын
at 32:30 at the one before the last line shouldn't there be "and isPal(s[1:-2])" , -2 instead of -1 ?
@ali517175 жыл бұрын
when I created my own program before this lecture I actually used that " -2" then I run into errors to realize few things which I will summarize it for you as below 1- when you usually want to last element or the last index we use array[-1] 2-when we use the " [:] " this is calling slicing methods (mentioned in previous lectures of the same course) now if you know about it array =array[start point : end point] ( there is something called advance slicing if you want to check it ) 3- when we want the same array using slicing method we do it as follows array=array[ : ] notice that doing so we leave black it means to start from the same point so if we want to start an element ahead we do array = array[1:] 4- in a similar way if we want the element before the last we do array = [ : -1] 5- combining them array = array [ 1 : -1 ] 6- try not to confuse indexing of array we slicing of an array good luck
@Cashman91115 жыл бұрын
@@ali51717 thanks, I got that after a while :)
@dalebada48104 жыл бұрын
Thanks! This lecture about recursion was great. Its purpose was well defined and elaborated. Did anyone spot the "code error" regarding the base -case at 46:58 by the way?
@nicoarellano3 жыл бұрын
d = {1:1, 2:1} I noticed the same. Anyway, great lecture
@foreveryoung16783 жыл бұрын
Yes, on line 165, had a another fib defined with only a base case n =1. That's why fib(0) bombed as it would just keep going down the rabbit hole.
@PedramNG3 жыл бұрын
Wow, this course got hard so fast.
@peasant72143 жыл бұрын
everything is hard until it is broken down.
@aymensekhri21335 жыл бұрын
Thanks a lot Prof. Eric !
@akbarrauf27417 жыл бұрын
thank you ,mit
@xuanchen31512 жыл бұрын
Trust the natural recursion!
@rishabhtripathi62906 жыл бұрын
Great version of tower of hanoi... 😀
@firstyfirst4 жыл бұрын
How u doin?
@sumittripathi13314 жыл бұрын
Ah!...he finally found the right glasses. (refer to 6.001 fall 2008)
@mohammedabadirleencahararg99746 жыл бұрын
nice teacher ur teaching process is favorite everybody!
@idc206272 жыл бұрын
During the mathematical induction step he explained, he said he wants to show that "this is equal to that". I believe the "that" it the k+1 * k+2 ,,," but what is the "this"?
@YoshBruh4 жыл бұрын
frik I gotta study for that quiz on Thursday
@sitrakaforler8696 Жыл бұрын
Mise en abîme ! ❤
@jasdeepsingh65684 жыл бұрын
I love this dude.
@vincenr88227 жыл бұрын
Thank you so much. This is amazing.
@yannickescalera32314 жыл бұрын
Awesome lesson!
@sagarjadhav17066 жыл бұрын
Excellent explanation !!!
@tjtube2635 жыл бұрын
Hold up. Nice lecture but I'm not satisfied with the solution to the Towers of Hanoi exercise: You changed the rules. That would be the obvious solution, but the premise of the challenge was that the priests could only move one disc at a time (like the river crossing problem). Isn't that the whole point?
@yuminkim72647 жыл бұрын
Nice prof! Thanks
@adelaidekhayon26315 жыл бұрын
any other classes with him?
@ashishtrivedi64263 жыл бұрын
The Holy amalgation of lookup and recursion called DYNAMIC PROGRAMMING>...................
@calumyoung71722 жыл бұрын
thank you. that was very helpful.
@pblinfo85315 жыл бұрын
Why did Prof. Grimson add k+1 to k(k+1)/2 at 19:07 ?
@rolandgerard60646 жыл бұрын
I wish i had such professors....
@PascalThalmann5 жыл бұрын
great explanation! Thanks!
@Xplao1236 жыл бұрын
Very easy to understand! Thanks
@BlackhandYsmira4 жыл бұрын
I wish he gave all the lectures for this course, thank you for sharing these!
@hish30982 жыл бұрын
A canadian treasure
@patriotpatriotic38946 жыл бұрын
Awesome! Thanks for sharing!
@englishmotherfucker10584 жыл бұрын
to understand recursion, one must first understand recursion of n-1
@pinxieanime4 жыл бұрын
Fibonacci would be extremely proud of you.
@bobthornton82827 жыл бұрын
You can use a list instead of a dictionary and get similar computation times
@ali517175 жыл бұрын
you actually can not, at least to the given problems in the lecture, I tried so already and tested every method and way to make list better than dictionaries in the lecture's examples but, dict. did beat list in that + you are welcome to try
@caliserion5 жыл бұрын
good explanations 👍
@FullMetal-nu8bj6 жыл бұрын
I think he is hilarious. Great explanation on recursive frames. Does Australia have a bunny problem...?
@BlitzN76 жыл бұрын
Rabbits have been considered to be a invasive pest for a few decades here in Australia.
@ryanthackston34396 жыл бұрын
en.wikipedia.org/wiki/Rabbits_in_Australia "Various methods in the 20th century have been attempted to control the Australian rabbit population. Conventional methods include shooting rabbits and destroying their warrens, but these had only limited success. In 1907, a rabbit-proof fence was built in Western Australia in an unsuccessful attempt to contain the rabbits. The myxoma virus, which causes myxomatosis, was introduced into the rabbit population in the 1950s and had the effect of severely reducing the rabbit population. However, the survivors have since adapted and partially recovered their previous numbers." Also read the "Biological Measures" section.
@aayushsharma20776 жыл бұрын
Don't know why MIT kids didn't laugh. His jokes were quite good! :D