[英]Higher Order Function Python (never ending?)
我有一個代碼,當它輸入的值像“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)
在sum
函數中,參數可能意味着
term
: 按索引獲取值的函數a
: 起始索引next
: 獲取下一個索引的函數b
: 最后一個索引OP 說:
sum()
函數不是我寫的。 我的任務是使用它,我不允許更改代碼。
所以我沒有接觸sum
函數。
您可以將t3
更改為lambda x: x + 1
。
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: x + 1
t4 = len(game) - 1
return sum(t1, t2, t3, t4)
results = knocked_down("132")
print('---')
print(results)
輸出:
1 0 1 2
3 1 2 2
2 2 3 2
---
6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.