定义计算机编程中的“递归”是什么？请提供一个示例说明其如何工作。
递归指在函数内部调用自己的过程。例如，要求一个自然数n的阶乘，可以使用以下的递归函数：

```
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)
```

当调用`factorial(5)`时，函数先检查参数是否为0，因为不是0，所以接下来调用`factorial(4)`，然后调用`factorial(3)`，以此类推，直到参数变为0时，最后返回1。接着，因为前面所有的递归调用都已经返回，函数将通过乘法计算出答案。

递归可以用于解决许多问题，包括对树形结构的遍历，对图形上的搜索，以及对迷宫的求解等。