Написание итерационной функции - PullRequest
0 голосов
/ 30 мая 2019

Я пишу программу, которая решает систему линейных уравнений. Мне нужно выполнить несколько итераций, чтобы увидеть улучшение моей цели. Сначала я написал программу с написанием функций печати внизу моего файла. Так что я сделал итерации сам в принципе. Теперь я хочу написать число итераций в качестве аргумента для функции.

Я пытался работать с циклами while и for, но мне это не помогло. Итак, теперь я попробовал формат, как вы можете видеть ниже. Я поместил здесь не всю свою программу, а лишь базовую структуру того, что она делает.

def function(A,x,c,iter):
    if iter == 0:
        return x
    else:
        A = 1/2 * A
        c = 1/2 * c
        x1 = 1/2 * x

        iter = iter - 1

        function(A,x1,c,iter)

Когда у меня iter = 0, это дает мне немедленное значение x. Но когда iter> 0, я получаю 'None' обратно ... Кто-нибудь может объяснить, почему это происходит, и помочь мне исправить мою программу? Спасибо!

Ответы [ 3 ]

2 голосов
/ 30 мая 2019
def function(A,x,c,iter):
    if iter == 0:
        return x
    else:
        A = 1/2 * A
        c = 1/2 * c
        x1 = 1/2 * x

        iter = iter - 1

        return function(A,x1,c,iter)

Вы просто не вернули значение else, а функции Python возвращают None, когда нет оператора return.

0 голосов
/ 30 мая 2019

Как цикл for это будет выглядеть так:

def function(A,x,c,iterN):
    for _ in range(iterN)
        A = 1/2 * A
        c = 1/2 * c
        x = 1/2 * x
    return x

Как примечание, не используйте iter для именования переменных, поскольку это встроенная функция python.

0 голосов
/ 30 мая 2019

Добавьте возврат в последнюю строку, чтобы значение возвращалось после выполнения функции: return function(A,x1,c,iter)

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