diff --git a/4_9_Exercises/Question 3.py b/4_9_Exercises/Question 3.py
new file mode 100644
index 0000000000000000000000000000000000000000..a2bd84b1f91c9fff7300693899e860e61ac7ec78
--- /dev/null
+++ b/4_9_Exercises/Question 3.py	
@@ -0,0 +1,20 @@
+def nsp(x, y, current=(0, 0)):
+    if current is None:
+        return 0
+    if current == (x, y):
+        return 1
+    else:
+        next_corner = new_index(x, y, current)
+        # uses helper function to find the next corner
+        return nsp(x, y, next_corner[0]) + nsp(x, y, next_corner[1])
+    pass
+
+
+def new_index(x, y, current):
+    # Helper function to find the possible next states, reduced clutter
+    if current[0] < x and current[1] < y:
+        return (current[0], current[1] + 1), (current[0] + 1, current[1])
+    if current[0] >= x and current[1] < y:
+        return (current[0], current[1] + 1), None
+    if current[0] < x and current[1] >= y:
+        return (current[0] + 1, current[1]), None