Функция высшего порядка Python (никогда не заканчивается?) - PullRequest
0 голосов
/ 13 марта 2020

У меня есть код, который работает, когда он вводится с возрастающим значением, например, «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)

1 Ответ

2 голосов
/ 13 марта 2020

В функции 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...