Lattice path from Project Euler with Python solution
All of your approaches are very brute force.  The answer can be computed with a bit of mathematical reasoning.  For an m × n lattice, all paths will have m + n segments, of which m segments will go down and n segments will go right.  So, out of m + n slots, count the ways to pick m downward moves; the rest of them will be rightward moves.  The number of paths is:

$${m + n \choose m} = {m + n \choose n} = \frac{(m+n)!}{m! \, n!}$$

So, the Python solution is simply:

from math import factorial

def lattice_paths(m, n):
    return factorial(m + n) // factorial(m) // factorial(n)


Even though the calculation involves large factorials, Python supports big integers seamlessly, and arrives at the answer nearly instantaneously.