Не могу поставить счетчик в цикл while

Нужно вывести кол-во итераций

Вот код: (полностью)

def newtons_method(a, b, f, f1):
    x0 = (a + b) / 2
    x1 = x0 - (f(x0) / f1(x0))
    n = int()
    while True:
        n += 1
        if math.fabs(x1 - x0) < e:
            return x1
        x0 = x1
        x1 = x0 - (f(x0) / f1(x0))
    print('Кол-во итераций:', n)

Выделяет последнюю строку: This code is unreachable и ничего не выводит. Почему так?


Ответы (2 шт):

Автор решения: Эникейщик

return выходит из функции, возвращая значение х1. Последняя строка недостижима, потому что или цикл продолжается, или функция завершается, не дойдя до той строки ( потому что она за пределами цикла).

Можно сделать так:

while True:
        n += 1
        if math.fabs(x1 - x0) < e:
            print('Кол-во итераций:', n)
            return x1
        x0 = x1
        x1 = x0 - (f(x0) / f1(x0))
→ Ссылка
Автор решения: eri
print('Кол-во итераций:', n)

Не доступен потому что находится после return.

Исправить можно так

def newtons_method(a, b, f, f1):
    x0 = (a + b) / 2
    x1 = x0 - (f(x0) / f1(x0))
    n = int()
    while True:
        n += 1
        if math.fabs(x1 - x0) < e:
            break
        x0 = x1
        x1 = x0 - (f(x0) / f1(x0))
    print('Кол-во итераций:', n)
    return x1
→ Ссылка