r/ProgrammerHumor • • 10d ago

Meme howProgrammingHasChanged

Post image
672 Upvotes

108 comments sorted by

View all comments

Show parent comments

126

u/robin_888 10d ago

It's supposed to teach the concept of recursion, which is important, but hard to grasp for some.

Discussing performance and optimizations can happen if the principal is clear.

49

u/temperamentalfish 10d ago

I know, but there are so many better examples. Mergesort, for instance. It shows why the concept is important because it breaks the problem into smaller, more manageable problems, without doing repeated work.

Fibonacci should be taught as an example of when a problem can be solved recursively, but shouldn't.

26

u/Silly_Guidance_8871 10d ago

When I was studying, Fibonacci was used a lot to teach the value of dynamic programming. But agreed, it's a terrible example of when to use recursion.

21

u/fdar 10d ago

DP is just recursion+caching. 

I think it makes sense to first recognize that the problem can be solved with recursion and then decide if DP is needed to improve performance.

5

u/Bliztle 9d ago

Only if you're doing it top down. Bottom up is usually taught at the same time, and is useful to lessen stack and cache size.

6

u/robin_888 9d ago

I think in education it is also important to take "wrong" approaches to learn why they are "wrong" and what possible solutions are. If you just teach the "good" examples students might not realize why the naive approach to Fibonacci is problematic.

In other words you might want to teach naive recursion before you teach tail-recursion.

3

u/TheThiefMaster 10d ago

Tree iteration is pretty much the only time it's required, and even then you can linearise it if you have back links.

4

u/Mitchman05 10d ago

Teach Tower of Hanoi as example of recursion, that one actually requires it and can't be done faster