How to convert this non-tail-recursion function to a loop or a tail-recursion version?
问题 I've been curious for this for long. It is really very easy and elegant for human to create a non-tail-recursive function to get something complicated, but the speed is very slow and easily hit the limit of Python recursion: def moves_three(n, ini=0, med=1, des=2): '''give a int -> return a list ''' if n == 1: return ((ini,des),) return moves_three(n-1, ini=ini, med=des, des=med) + \ ((ini, des),) + \ moves_three(n-1, ini=med, med=ini, des=des) if __name__ == '__main__': moves_three(100) #