想知道是否有人可以指出我一个好的递归教程。当我在第一学期的数据结构课程中学到它时,我有点生疏了。想要了解我的递归...任何帮助?
答案 0 :(得分:11)
考虑this。
更严重......
递归是一种解决问题的方法,这些问题具有明确定义的基本情况(或者情况,btu我在这里保持简单。)
例如,通常引用的因子问题是一个很好的问题。
factorial做什么?我们来看一些例子:
factorial(0) = 1
factorial(1) = 1
factorial(2) = 2
factorial(3) = 6
factorial(4) = 24
数字的阶乘是该数字乘以它前面的数字的阶乘,除非(现在,这是基本情况)数字为0.阶乘为0是1.(你不能采用负数的阶乘;只能采用正整数。)
所以我们有明确定义的基本案例。并且我们知道如何处理不是我们基本情况的数字(我们将它们乘以比它少的数字因子。)我们已准备好编写我们的函数。
def factorial(x):
if x == 0: # this is our base case
return 1 # and this is what we do when we see it
else: # this is what we do with all other numbers
return x * factorial(x-1)
所以你
在函数中正式表达(当它很简单!)看起来像
function:
if base case:
this
else:
something + function(something closer to the base case)
如果你想要更先进的东西,谷歌有很多信息。
答案 1 :(得分:5)
我强烈建议您观看麻省理工学院的intro to programming course。
Lecture 4谈论递归。