C++ 有好的递归教程吗?python

C++ 有好的递归教程吗?python,c++,python,recursion,C++,Python,Recursion,想知道是否有人能给我介绍一个好的递归教程。我对它有点生疏,因为我在第一学期的数据结构课上学到了它。想复习一下我的递归…有什么帮助吗 我强烈推荐看麻省理工学院的 谈论递归。考虑一下 更严重的是 递归是一种解决有明确定义的基本情况的问题的方法(或者说,我在这里保持简单) 例如,经常引用的阶乘问题就是一个很好的问题 阶乘做什么?让我们看一些例子: factorial(0) = 1 factorial(1) = 1 factorial(2) = 2 factorial(3) = 6 factorial(

想知道是否有人能给我介绍一个好的递归教程。我对它有点生疏,因为我在第一学期的数据结构课上学到了它。想复习一下我的递归…有什么帮助吗

我强烈推荐看麻省理工学院的

谈论递归。

考虑一下

更严重的是

递归是一种解决有明确定义的基本情况的问题的方法(或者说,我在这里保持简单)

例如,经常引用的阶乘问题就是一个很好的问题

阶乘做什么?让我们看一些例子:

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)
    

  • 如果你想要更高级的东西,谷歌有很多信息

    该死的,你先到了,马克!:)太好了,应该是我的!Meh,我怎么能指望一个递归问题没有一个经典的自我笑话链接呢!:只有PIf它才会出现在右边的“链接”部分:/+1表示递归答案:-),这也很好。而且是递归的!