给出三种使用递归的实际例子并解释它们的原理。
请给出三种使用递归的实际例子并解释它们的原理。
1. 阶乘计算： 阶乘是一个数乘以其前面所有自然数的积，可以使用递归来计算。例如，factorial(5) = 5*4*3*2*1 = 120，其中factorial(n) = n*factorial(n-1)。递归的原理是将大问题分解成更小的子问题，该子问题通过在不断减小的输入上不断重复应用基本操作来求解。当达到基本情况（即输入为1）时，递归停止，然后返回结果。

2. 目录文件树遍历：在计算机中，文件和文件夹通常以树形式组织。递归可用于遍历整个目录树以查找特定类型的文件。原理是从父级目录开始，在每个目录中递归地访问子目录，直到达到叶节点（即没有子目录）或找到了所需的文件。递归扩展目录树时，它们处理每个子目录的方式相同，这使得代码简洁且易于理解。

3. 斐波那契数列：斐波那契数列是一个数列，其中每个数字等于前两个数字的和。例如，1，1，2，3，5，8，13。可以使用递归计算第n个斐波那契数，其中fib(n) = fib(n-1) + fib(n-2)。当计算时，原理类似于阶乘计算，将大问题分解成更小的子问题，直到到达基本情况（即n=1或2）时停止递归并返回结果。