Codecademy上的简单递归

时间:2014-04-23 17:36:29

标签: python math recursion

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

File "python", line 6
    else:
       ^
SyntaxError: invalid syntax

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

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 

谢谢你们

2 个答案:

答案 0 :(得分:5)

以下内容适合您。

def timesTwo(n):
    if(n == 0):
        return 0 # What is 2 x 0 again? I forgot... 
    else: 
        return timesTwo(n-1) + 2  #You write this! 

我也不确定你回来后为什么要做n * 2。这是一个语法错误,因为if缺少else

答案 1 :(得分:1)

语法错误与Python如何解释行开头的缩进有关。由于n*2是与if行垂直排列的表达式,而不是缩进,因此它有效地发出if块的 end 信号。这意味着,而不是elseif相关联,它本身就是悬空 - 这是非法的。

相比之下,此代码没有语法错误,因为ifelse之间只有缩进代码:

# NOTE: this code still has problems!
def timesTwo(n):
    if(n == 0):
        return '2 x 0 = 0'
        n * 2
    else:
        return timesTwo(n-1) + 2

但是,此代码至少还有两个主要错误。一个是表达式n * 2无法访问,因为它出现在return语句之后(请确保您理解这一点,因为理解return的作用非常重要)。另一个问题与n == 0案例的作用有关,如果您尝试运行timesTwo(1)并希望看到会发生什么,这将有望清楚......