Не могу поставить счетчик в цикл 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