递归对于划分和解决问题很有用。每个递归调用本身都会派生其他递归调用。递归函数的中心是两种类型的情况:基本情况(它告诉递归何时终止)和递归情况(调用它们所在的函数)。自然使用递归解的一个简单问题是计算阶乘。递归阶乘算法有两种情况: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,需要四个递归调用加上初始父调用。