嘿,伙计们是python应用程序开发的新手。我已经开始了解python中的recrusive函数。我已完成的代码
def something(a):
if a == 0:
return 0
else:
return 2 + something(a)
当我调用像pythons(5)
这样的函数时,它会将我称为TypeError: something() missing 1 required positional argument: 'b'
我想在一个数字中添加两个,如果我调用something(5)
它必须返回5 + 2 = 7
我不知道为什么会收到这个错误。希望你们可以帮助我解决这个问题。如果这是一个低级别的问题,请告诉我。
任何帮助将不胜感激..谢谢提前..
答案 0 :(得分:2)
这是因为在你的方法中,当你递归调用pythons
时,你没有传递两个参数。这可能是你想要的:
def pythons(a,b):
if a == 0:
return a
else:
return a * (b-1)
或简单地(结果相同):
def pythons(a,b):
return a * (b-1)
答案 1 :(得分:2)
这里有几个问题。首先,python代码在缩进时是空格敏感的(注意问题已被编辑,格式化以前不正确)。然后,您需要匹配提供给函数的参数数量:
def pythons(a,b):
if a == 0:
return a
else:
return a * pythons(a,b-1)
当您编写def pythons(a,b):
时,您正在定义一个名为pythons
的函数,并且您指定它需要完全 2个参数,a
和{{ 1}}。以前您尝试使用b
调用它,错误消息会告诉您确切的错误,当函数期望得到2个参数时,您只提供了1个参数。
答案 2 :(得分:0)
如果你的目标是递归地添加两个数字,那么这将是一个更合适的递归函数。
def add(a, b):
if a == 0 and b ==0:
return 0
elif b == 0 and a>= 0:
return 1 +add(a-1, 0)
elif a ==0 and b>= 0:
return 1 + add(0, b-1)
else: return 2 + add(a-1, b-1)