Решение всегда возвращает x = 0 - PullRequest
0 голосов
/ 05 июня 2019

При использовании этого кода я получаю возвращаемое значение 0 всегда

def fi(arr,mini):
    print(arr)
    if(len(arr)<3):
        x = mini
        return 
    for j in range(1,(math.ceil(len(arr)/2) )):
        l1 = 2*j+1
        if(med(arr[0:l1])<mini):
            mini= med(arr[0:l1])
            print("hello", mini)
    fi(arr[1:],mini)
    return x

Ответы [ 3 ]

1 голос
/ 05 июня 2019

Вы определяете x только если len(arr) < 3. В других случаях он не назначен. Вы должны добавить значение по умолчанию перед блоком if или внутри блока else в зависимости от того, что вы пытаетесь сделать.

0 голосов
/ 05 июня 2019

вы определяете локальную переменную 'x', область действия которой ограничена блоком if, и вы пытаетесь вернуть эту переменную из функции, поэтому она становится неопределенной. Лучше определите локальную переменную x в функции и задайте ей значение по умолчанию, которое должно быть возвращено функцией.

def fi(arr,mini):
    x = some_default_value
    print(arr)
    if(len(arr)<3):
        x = mini
        return 
    for j in range(1,(math.ceil(len(arr)/2) )):
        l1 = 2*j+1
        if(med(arr[0:l1])<mini):
            mini= med(arr[0:l1])
            print("hello", mini)
    fi(arr[1:],mini)
    return x
0 голосов
/ 05 июня 2019

Вы не объявили x перед тем, как присвоить его mini. Что должна вернуть ваша функция по умолчанию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...