Получена ошибка относительно глобальной переменной в рекурсии - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь использовать рекурсию для решения вопроса, но у меня возникла запутанная ошибка. Если кому интересно, то это вопрос от leetcode: https://leetcode.com/problems/plus-one/

Я не мог понять ошибку, кто-нибудь может мне помочь с этим? Большое спасибо!

Вот мой код ниже:

class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        i = -1
        head = -len(digits)
        def add_and_carry(x):
            global i
            if x + 1 == 10:
                if i == head:
                    digits.insert(0, 1)
                digists[i] = 0
                i -= 1
                add_and_carry(digits[i])
            else:
                digits[i] += 1

        add_and_carry(digits[i])
        return digits

Несмотря на то, что я определил переменную i, а также сделал ее глобальной с «глобальным» внутри тела внутренней функции, я все равно получаю ошибку:

NameError: global name 'i' is not defined

1 Ответ

0 голосов
/ 17 января 2019

Я не уверен, почему вы используете столько вложенных структур, но вам нужно nonlocal вместо global - в случае, если ваша версия Python позволяет это.

...