递归与迭代:Python中函数递归与迭代的对比实例

原创 柔情只为你懂 2025-01-29 11:15 62阅读 0赞

在Python编程中,递归和迭代是两种解决问题的策略。下面我们将通过两个具体的例子来对比它们。

  1. 斐波那契数列
    递归实现(循环版本已省略):
  1. def fibonacci_recursive(n):
  2. if n <= 0:
  3. return "Invalid input"
  4. elif n == 1:
  5. return 0
  6. else:
  7. return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)

迭代实现(使用列表存储中间结果):

  1. def fibonacci_iterative(n, lst=[]):
  2. if n <= 0:
  3. return lst
  4. elif n == 1:
  5. return [0]
  6. else:
  7. lst.append(fibonacci_iterative(n-1), lst))
  8. return lst[-1]
  1. 二分查找
    递归实现:
  1. def binary_search_recursive(arr, target, low=0, high=None):
  2. if high is None:
  3. high = len(arr) - 1
  4. if target == arr[low]:
  5. return low
  6. elif target < arr[high] and low < high:
  7. return binary_search_recursive(arr, target, low + 1, high)
  8. else:
  9. return "Target not found in array"

迭代实现(使用列表存储中间结果):

  1. def binary_search_iterative(arr, target, low=0):
  2. if len(arr) == low + 1:
  3. return "Target not found in array"
  4. arr = [x for x in arr] # 将输入的列表复制到新数组
  5. index = low
  6. while index <= high and target != arr[index]:
  7. index += 1
  8. if index > high: # 如果超出范围,说明未找到目标
  9. return "Target not found in array"
  10. return index - low # 返回实际的索引位置(减low是因为查找是从low开始的)
  11. # 测试代码
  12. arr = [1, 2, 3, 4, 5]
  13. target = 3
  14. result_recursive = binary_search_recursive(arr, target)
  15. result_iterative = binary_search_iterative(arr, target)
  16. print(f"递归实现: {result_recursive}")
  17. print(f"迭代实现: {result_iterative}")

以上实例对比了Python中函数递归与迭代的处理方式。递归在解决需要多次重复相似操作的问题时通常更简洁,但在效率和内存使用上可能较迭代差。而迭代方法则更稳定,尤其是当数据量较大时,迭代通常优于递归。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,62人围观)

还没有评论,来说两句吧...

相关阅读