对于给定的一段代码，解释它的运行原理。
代码：
```
def factorial(n):
  if n == 1:
    return 1
  else:
    return n * factorial(n-1)
```
这是一个递归函数计算阶乘。当输入参数n等于1时，返回1。否则，通过n乘以小于n的整数的阶乘来计算n的阶乘，并返回该结果。该函数根据递推公式n!=n*(n-1)!，再一次次的自我调用实现。