Exercise 4.9 question 4 done still requires optimization for space usage and speed. Memoizing might be a good Idea!