As we approach we week 7, us programmers are having to familiarize ourselves with a tool called recursion. This a very powerful, but very confusing concept of programming. Recursion is basically the ability for a function to call itself. Even though this seems simple, the applications of recursion are far from it. Recursion can be as simple as drawing a tree on the screen or as complex as solving the classic Towers of Hanoi problem. However, it is able to simplify many problems in computer science.
Personally one of my biggest flaws in recursion, is my ability to trace the code. I find it extremely difficult to understand what a block of recursive code is supposed to do. Even if I get the gist of the code, the exact result will often elude me. I have found drawing a flow chart useful in tracing the code, since I can visualize the branching aspect of the recursion. However when the number of recursive calls becomes large, this no longer works. Thankfully the recursion in this course has not been too deep and has been somewhat traceable by my abilities.
One of the greatest challenges involving recursion was Assignment 1. Not only did it have a core aspect of recursion in the main algorithm, but it also had many other components of programming that I am rusty on. Additionally, I am rather disorganized when it comes to large coding projects. I find it difficult to remain which class does what, and how they all intertwine. I spent about 2 hours reading the class descriptions before I could actually start the project. Then when it came to the actual recursion, I was confused on how to implement it into our group's classes.
Now that we are expected to understand recursion to a large degree, I think it will show up in more exercises and assignments. This will make the course more difficult, yet a lot more interesting (I was getting bored of exercises where we just make classes).
No comments:
Post a Comment