请给出优化下面代码的建议。


```
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)
```
可以改写成尾递归的形式，这样可以节省调用栈的空间。例如：


```
def factorial_helper(n, acc):
    if n == 0:
        return acc
    else:
        return factorial_helper(n-1, acc*n)


def factorial(n):
    return factorial_helper(n, 1)
```