Function | Iterative Solution | Recursive Solution | Recursive Solution with Stack Trace |
factorial | def factorial(n): factorial = 1 for i in range(2,n+1): factorial *= i return factorial
print factorial(5)
| def factorial(n): if (n < 2): return 1 else: return n*factorial(n-1)
print factorial(5)
| def factorial(n, depth=0): print " "*depth, "factorial(",n,"):" if (n < 2): result = 1 else: result = n*factorial(n-1,depth+1) print " "*depth, "-->", result return result
print factorial(5) |
reverse | def reverse(s): reverse = "" for ch in s: reverse = ch + reverse return reverse
print reverse("abcd")
| def reverse(s): if (s == ""): return "" else: return reverse(s[1:]) + s[0]
print reverse("abcd")
| def reverse(s, depth=0): print " "*depth, "reverse(",s,"):" if (s == ""): result = "" else: result = reverse(s[1:], depth+1) + s[0] print " "*depth, "-->", result return result
print reverse("abcd") |
gcd | def gcd(x,y): while (y > 0): oldX = x x = y y = oldX % y return x
print gcd(500, 420) # 20
| def gcd(x,y): if (y == 0): return x else: return gcd(y,x%y)
print gcd(500, 420) # 20
| def gcd(x,y,depth=0): print " "*depth, "gcd(",x, ",", y, "):" if (y == 0): result = x else: result = gcd(y,x%y,depth+1) print " "*depth, "-->", result return result
print gcd(500, 420) # 20 |