我的代码没有错误,函数返回没有结果

时间:2015-07-31 23:43:28

标签: python-2.7

我已为 HW 创建此功能,但每次运行时,python都不会返回结果,

我做错了什么?。

多重峰

def mult( n, m ):
    """ input two strings
        output the product of those numbers
    """
    if n==0 or m==0:
        return 
    elif m<0:
        m=abs(m)
        m+m
        mult(n-1,m)
        return 
    else:
        m+m
        mult(n-1,m)
        return 

2 个答案:

答案 0 :(得分:2)

在Python return中是一个翻译动词。它有点像动词“说”或“走”

是什么?去哪里?返回什么

您似乎认为return只是将执行流返回给调用者(可能返回最后计算的表达式的值),但它不会那样工作。

def add(x,y):
   return x+y

返回x和y的总和

def add(x,y):
    x+y
    return

不返回任何内容(在Python中称为None)。它计算x和y的总和,然后丢弃结果。

答案 1 :(得分:1)

return视为&#34;给那个给我打电话的人#34;。

def four():
    return 4

print("four is ", four()) # four is 4

所以,如果我需要一个四,我可以调用我方便的新功能:print("four is ", four())print()调用four()来获取结果。如果我用空的return语句定义four(),它就不会给我任何东西。

def four():
    4
    return

print("four is ", four()) # four is None
带递归的

return是相同的&#34;给予呼叫者&#34;原则,只是更复杂。

def add(n,m):
    """add two integers together. The second integer
    cannot be negative"""
    if m == 0:
        return n
    else:
        return 1 + add(n, m-1)

为简单起见,第二个数字不能小于0.现在,考虑算法,以及return <something>如何影响它。如果m为零,则为n + 0 == n,因此我们只需要return n。否则,我们会在最终答案中添加一个并从m中减去一个。

add(2, 3)变成了 1 + add(2, 2)return表示&#34;给予打电话给我的人#34; add(2, )),成为1 + 1 + add(2, 1),成为1 + 1 + 1 + add(2, 0)当我们在第二个点看到零时,我们只用第一个数字替换它,因此它变为1 + 1 + 1 + 2,即5