递归和反向跟踪在 Python 中是什么?
递归
递归在分解和求解问题时十分有用。每个递归调用都会自动运行其他递归调用。一个递归函数的核心包括两种情况:递归终止条件,即基本情况,以及函数自调的递归情况。一个通常使用递归求解的简单问题是计算阶乘。递归阶乘算法包括两种情况:n = 0 时为基本情况,n>0 时为递归情况。
反向跟踪
反向跟踪是求解某些计算难题的一般算法,它逐渐建立求解时的选择方案,从而避免继续处理会导致不可能求解的路径。反向跟踪允许我们在做错选择时进行撤销。
阶乘的一个典型实现如下 -
示例
def factorial(n): #test for a base case if n==0: return 1 # make a calculation and a recursive call f= n*factorial(n-1) print(f) return(f) factorial(4)
该代码打印出数字 1、2、4、24。计算阶乘 4 需要四次递归调用以及最初的父调用。
广告