解释计算机编程中的递归并给出一个递归的示例。
递归指的是在一个函数内部调用自己的过程。递归常常用于解决可以分解成相同问题的子问题的问题，其中每个子问题都可以通过相同的方法来解决。

一个简单的递归示例是阶乘函数，其中 n! = n * (n-1)!

```
int factorial(int n) {
  if (n == 0) {
    return 1;
  }
  return n * factorial(n - 1);
}
```

该函数计算给定整数 n 的阶乘。如果 n 为 0，函数将返回 1。否则，它会计算 n 与 factorial(n-1) 的乘积。这实际上就是递归调用 factorial 函数本身，并在数列到达 0 时终止递归。因此，例如，factorial(5) 的计算步骤如下：

factorial(5)
  = 5 * factorial(4)
  = 5 * 4 * factorial(3)
  = 5 * 4 * 3 * factorial(2)
  = 5 * 4 * 3 * 2 * factorial(1)
  = 5 * 4 * 3 * 2 * 1 * factorial(0)
  = 5 * 4 * 3 * 2 * 1 * 1
  = 120