我已为 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
答案 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
。