Skip to content

Understanding Python bytecode by implementing tail call optimization

blog.fastforwardlabs.com
12 pointsmynameisfiber3 comments
On HN

Comments

This code does not do what the author thinks it does:

    def factorial(N, result=1):
        if N == 1:
            return 1
        return factorial(N-1, N*result)

No, but the time complexity is the same.

Okay but if you are going to call the function factorial, why not have it actually calculate a factorial? This would have done the job:

    def factorial(N, result=1):
        if N == 1:
            return result
        return factorial(N-1, N*result)
Assuming that you never call it with the result argument.

As written, it just looks like the author never ran the code.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.