递归函数是一种在函数中调用自身的技术,通常用于解决可以被拆分成多个相同问题的问题。
递归函数分为两种:
使用递归函数解决问题的一般步骤如下:
递归函数可以用来解决许多问题,如下列举几个例子:
阶乘问题可以用递归函数来解决。阶乘函数的定义如下:
factorial(n) = n * factorial(n-1)
其中,factorial(0) = 1
代码实现如下:
python def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)
斐波那契数列问题也可以用递归函数来解决。斐波那契数列的定义如下:
fib(n) = fib(n-1) + fib(n-2)
其中,fib(0) = 0
,fib(1) = 1
代码实现如下:
python def fib(n): if n == 0: return 0 elif n == 1: return 1 else: return fib(n-1) + fib(n-2)
树形问题也可以使用递归函数来解决,比如二叉树的遍历问题。
代码实现如下:
python class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def preorderTraversal(root: TreeNode) -> List[int]: if root is None: return [] else: return [root.val] + preorderTraversal(root.left) + preorderTraversal(root.right)
在以上例子中,关键词递归函数、子问题、递归终止条件、阶乘、斐波那契数列、二叉树遍历等都是重要的。