I came across the same problem. Everything runs smoothly till `n=7` and suddenly it takes forever to calculate for `n=8`. The problem lies with the order in which you are checking for the moves. You are using : xMove[8] = { -2, -2, 2, 2, -1, -1, 1, 1} yMove[8] = { -1, 1, -1, 1, -2, 2, -2, 2} If you plot these vectors in the 2D plane, they are haphazardly placed. In other words, they are not ordered in either a clockwise or an anti-clockwise manner. However, by using this instead : xMove[8] = { 2, 1, -1, -2, -2, -1, 1, 2 } yMove[8] = { 1, 2, 2, 1, -1, -2, -2, -1 } If you plot these vectors, they are neatly arranged in an anticlockwise circle. Somehow this causes the recursion to run much quickly for large values of `n`. Mind you, it still takes forever to calculate for `n=9` onwards.