小编hea*_*her的帖子

河内Python之塔-了解递归

我对Python完全陌生,目前正在阅读有关河内塔和递归的教程。我以为我理解递归,直到他们给出了这个例子:

def moveTower(height,fromPole, toPole, withPole):
    if height >= 1:
        moveTower(height-1,fromPole,withPole,toPole)
        moveDisk(fromPole,toPole)
        moveTower(height-1,withPole,toPole,fromPole)
    #print(withPole)

def moveDisk(fp,tp):
    print("moving disk from",fp,"to",tp)


moveTower(3,"A","B","C")
Run Code Online (Sandbox Code Playgroud)

它用3张光盘打印出解决河内塔问题的正确举动:从A到B的移动磁盘从A到C的移动磁盘从B到C的移动磁盘从A到B的移动磁盘从C到A的移动磁盘从C的移动磁盘到B将磁盘从A移到B

我的问题是,它是怎么做到的?有人可以遍历代码行,以便我了解它如何打印正确的动作吗?我主要是混淆怎样的价值fp,并tp可以从改变ABC。抱歉,这是一个广泛的问题!任何帮助将不胜感激!

python algorithm recursion towers-of-hanoi

5
推荐指数
1
解决办法
2万
查看次数

理解阶乘递归

我正在查看递归的阶乘示例,并且只是想确保我正确理解它!

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)
Run Code Online (Sandbox Code Playgroud)

我是否正确地说:

阶乘(4)=阶乘(4-1)*4 =阶乘(3-1)*3*4 =阶乘(2-1)*2*3*4 =阶乘(1-1)*1*2*3*4 = 24

因为阶乘(1-1)=阶乘(0),其作为基本情况显示= 1然后我们乘以2,然后乘以3然后乘以4.

这是看待它的正确方法吗?

提前致谢!

python recursion factorial

4
推荐指数
1
解决办法
966
查看次数

Codeacademy上的简单递归

目前在codecademy上做一个递归教程.它告诉我,我是对的,可以进入下一课,但也提出:

File "python", line 6
    else:
       ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

显然这是不对的!你能看看这个链接并告诉我什么了吗?!我很困惑!

http://www.codecademy.com/courses/python-intermediate-en-7f7dx/0/2#

如果我的代码没有出现,它是:

def timesTwo(n):
    if(n == 0):
        return '2 x 0 = 0'

    n*2
    else: 
        return timesTwo(n-1) + 2 
Run Code Online (Sandbox Code Playgroud)

多谢你们

python math recursion

-1
推荐指数
1
解决办法
429
查看次数

标签 统计

python ×3

recursion ×3

algorithm ×1

factorial ×1

math ×1

towers-of-hanoi ×1