http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/496691
に、tail-recursion decoratorなんてのがある
コメントのケツにある奴がベターなのかな

とりあえず例二つぐらい試したら、一応動いてるようだ

@tail_recursive
def fact(n, acc = 1):
    return acc if n == 0 else fact(n - 1, n * acc)

def fib(n):
    @tail_recursive
    def fib_iter(a, b, m):
        return a if m == 0 else fib_iter(b, a + b, m - 1)
    return fib_iter(0, 1, n)