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

Top*_*hef 3 c++ python recursion

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

Isa*_*aac 11

考虑一下.

更严重的是......

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

例如,通常引用的因子问题是一个很好的问题.

factorial有什么作用?我们来看一些例子:

factorial(0) = 1
factorial(1) = 1
factorial(2) = 2
factorial(3) = 6
factorial(4) = 24
Run Code Online (Sandbox Code Playgroud)

一个数的阶乘是数字乘以之前它附带的数的阶乘,除非(现在,这是基础案例)的数目为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)
Run Code Online (Sandbox Code Playgroud)

那么你

  1. 清楚地定义您的基本案例.
  2. 找到一种方法,从非基本情况基本情况减少您的问题.
  3. 在函数中正式表达(当它很简单时!)看起来像

    function:
        if base case: 
            this
        else: 
            something + function(something closer to the base case)
    
    Run Code Online (Sandbox Code Playgroud)

如果你想要更先进的东西,谷歌有很多信息.


adv*_*ait 5

我强烈建议观看麻省理工学院的编程课程.

第4讲讲述递归.