递归是一种算法技巧,它允许在函数内部调用自己。递归算法通常用于解决分治问题,即将大问题分解为若干个小问题,然后递归地解决这些小问题。最后将所有小问题的答案合并得到大问题的答案。递归算法需要确定一个终止条件,以防止函数无限递归。

 

递归算法几个例子:

  1. 斐波那契数列:递归算法可以用来求斐波那契数列的第n项。这个算法的终止条件是n=1或n=2,其余情况则递归求解。
  2. 求阶乘:递归算法可以用来求n的阶乘。这个算法的终止条件是n=1,其余情况则递归求解。
  3. 求解汉诺塔问题:递归算法可以用来解决汉诺塔问题。这个算法的终止条件是只剩一个盘子,其余情况则递归求解。
  4. 二分查找:递归算法可以用来实现二分查找算法。这个算法的终止条件是找到目标元素或查找区间为空,其余情况则递归求解。
  5. 遍历二叉树: 递归算法可以用来遍历二叉树。终止条件是遍历到叶子节点。

 

  1、斐波那契数列:

  def fibonacci(n):

      if n == 1 or n == 2:

          return 1

      else:

          return fibonacci(n-1) + fibonacci(n-2)
斐波那契数列

  2、求阶乘:

  def factorial(n):

      if n == 1:

          return 1

      else:

          return n * factorial(n-1)

 

 

  3、求解汉诺塔问题:

  def hanoi(n, src, dst, tmp):

      if n == 1:

          print(f”move disk {n} from {src} to {dst}”)

      else:

          hanoi(n-1, src, tmp, dst)

          print(f”move disk {n} from {src} to {dst}”)

          hanoi(n-1, tmp, dst, src)

 

  4、二分查找:

  def binary_search(arr, target, low, high):

      if low > high:

          return -1

      else:

          mid = (low + high) // 2

          if arr[mid] == target:

              return mid

          elif arr[mid] < target:

              return binary_search(arr, target, mid+1, high)

          else:

              return binary_search(arr, target, low, mid-1)

 

  5、遍历二叉树:

  class Node:

      def __init__(self, val):

          self.val = val

          self.left = None

          self.right = None

 

  def preorder_traversal(root):

      if root is None:

          return

      print(root.val)

      preorder_traversal(root.left)

      preorder_traversal(root.right)

 

★关于WorkWin公司电脑监控软件★

WorkWin的使命是打造Work用途的Windows 电脑系统,有效规范员工上网行为,让老板知道员工每天在做什么(监控包括屏幕、上网在内的一举一动),限制员工不能做什么(禁止网购、游戏、优盘等)。

WorkWin基于纯软件设计,非常容易使用,无需添加或改动任何硬件,使用一台管理机监控全部员工机电脑。历经南京网亚十余年精心打造,此时此刻每天都有成千上万企业电脑正在运行WorkWin,选择WorkWin选择“赢”。

WorkWin介绍

WorkWin监控首页 短视频讲解 下载免费试用版

版权所有,南京网亚计算机有限公司 。本文链接地址: 递归算法,读这篇文章或许更有启发