递归就是函数调用自身的过程。
递归要有一个结束条件,并且每次调用都要向这个结束条件推进,否则程序会永远无法结束。
意思也就是说,一个函数在执行过程中会直接或间接地调用自身,通过不断缩小问题的规模,最终达到一个可以直接求解的基本情况,然后逐步返回结果,这就是递归。
工作原理
递归函数的执行过程包含两个关键阶段:
递推阶段:递归函数不断调用自身,将原问题分解为规模更小的子问题,直到达到基本情况。在这个阶段,函数的调用会层层嵌套,每一次调用都会将当前的状态(包括参数、局部变量等)压入调用栈中。
回归阶段:当达到基本情况后,递归函数开始返回结果。从最内层的调用开始,依次将结果返回给上一层调用,直到最初的调用处,最终得到原问题的解。
举个例子
-
计算阶乘
阶乘是一个经典的递归问题,n 的阶乘(表示为 n!)定义为 n * (n-1) * (n-2) * … * 1,其中 0! 定义为 1。可以使用递归函数来计算阶乘,代码如下:def factorial(n): # 基本情况&#x