任何好的递归教程?蟒蛇?

时间:2010-07-21 02:05:18

标签: c++ python recursion

想知道是否有人可以指出我一个好的递归教程。当我在第一学期的数据结构课程中学到它时,我有点生疏了。想要了解我的递归...任何帮助?

2 个答案:

答案 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)

所以你

  1. 明确定义您的基本案例。
  2. 找到一种方法将问题从非基础案例减少到基本案例。
  3. 在函数中正式表达(当它很简单!)看起来像

    function:
        if base case: 
            this
        else: 
            something + function(something closer to the base case)
    
  4. 如果你想要更先进的东西,谷歌有很多信息。

答案 1 :(得分:5)

我强烈建议您观看麻省理工学院的intro to programming course

Lecture 4谈论递归。