请问有没有人能指点我一下好的递归教程。我学过数据结构课程,其中涉及到递归,但是现在有点生疏了。想要复习一下递归...有什么建议吗?
请问有没有人能指点我一下好的递归教程。我学过数据结构课程,其中涉及到递归,但是现在有点生疏了。想要复习一下递归...有什么建议吗?
考虑这个问题。
更加严谨地说...
递归是解决具有明确定义基本情况的问题的一种方法(或者有多个基本情况,但为了简单起见,我只保留一个)。
例如,通常引用的阶乘问题是一个很好的例子。
阶乘做什么?让我们看一些例子:
factorial(0) = 1
factorial(1) = 1
factorial(2) = 2
factorial(3) = 6
factorial(4) = 24
一个数的阶乘是它与它前面的数的阶乘的积,除非(现在,这就是基本情况)该数为0。0的阶乘为1。(你不能计算负数的阶乘,只能计算正整数的阶乘。)
因此,我们有了明确定义的基本情况。而且我们知道如何处理不是基本情况的数字(我们将它们乘以比它小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)
如果你想要更高级的东西,谷歌有很多相关信息。