函数式编程中的递归

编程范式概念

Eleanor Thomas

Senior Data Analytics Engineer

什么是递归?

  • 递归函数:会调用自身的函数
  • 必须包含终止条件(基例)
  • 还需包含对自身的递归调用,并使用修改后的输入
0 | def my_recursive_function(input_value):
1 |     # base case
2 |     if base_case_condition:
3 |        return base_case_output_value
4 |     # recursive call
5 |     else:
6 |        return my_recursive_function(modified_input_value) + some_modification
编程范式概念

为何使用递归?

  • 某些问题用递归定义更直观
  • 斐波那契数列:
    • 0, 1, ...
    • 0, 1, 1, ...
    • 0, 1, 1, 2, ...
    • 0, 1, 1, 2, 3, ...
编程范式概念

更多递归示例

文件系统

  • 在文件系统中搜索
编程范式概念

更多递归示例

文件系统;排序方法

  • 在文件系统中搜索
  • 某些排序算法,如归并排序
编程范式概念

更多递归示例

文件系统;排序方法;数据结构

  • 在文件系统中搜索
  • 某些排序算法,如归并排序
  • 各种数据结构以递归方式定义
编程范式概念

递归 vs 迭代

  • 每个递归函数都可改写为迭代
  • 迭代函数用循环替代递归调用
def iterative_factorial(n):
    result = 1
    for i in range(1, n + 1):
        result = result * i
    return result
编程范式概念

Passons à la pratique !

编程范式概念

Preparing Video For Download...