簡體   English   中英

高階函數 Python(永無止境?)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM