繁体   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