【发布时间】:2020-06-25 07:44:05
【问题描述】:
我有一个代码可以在输入像“123”这样的递增值时起作用,但在下一个字符小于前一个字符(例如“132”)时不起作用,如果有相同的数字,则递归永远不会停止(例如'122')
请在我的代码中指出问题,我们将不胜感激。
def sum(term, a, next, b):
if (a > b):
return 0
else:
print (term(a), a, next(a), b)
return term(a) + sum(term, next(a), next, b)
def knocked_down(game):
t1 = lambda x:int(game[x])
t2 = 0
t3 = lambda x: int(game[x])
t4 = len(game)-1
return sum(t1, t2, t3, t4)
results=knocked_down("123")
print('---')
print(results)
【问题讨论】:
-
它工作时应该做什么?
-
@Sayse 假设执行“1+2+3”,然后打印出 6。
-
顺便说一句,您应该避免覆盖内置名称。在这种情况下,
next是参数的错误名称。 -
我认为
t3函数有问题。我认为t3应该是lambda x: x + 1。 -
那么,您应该为
sum提供正确的输入,所以它的行为就像将1+2+3 加在一起?而且这不是家庭作业或其他一些人为的测试吗?
标签: python loops recursion higher-order-functions