Все правильно, но что происходит в моем цикле while. Я пытаюсь написать эту функцию рекурсивно, и это то, что я придумал.Пока цикл не повторяется
def fp(f, guess, error=0.0000000000001):
p_guess = guess
c_guess = f(p_guess)
iterations = 0
while not close(p_guess, c_guess, error=error):
next = f(guess)
iterations += 1
return fp(f, next, error=error)
return (iterations, c_guess)
def fp_sqrt(x):
return fp(lambda y: (y + x/y)/2, 1.0)
Я знаю, что у меня что-то не хватает. Кто-то сказал, чтобы я взял выражение возврата из области действия из цикла while, но это просто закончило бесконечный цикл.
Из оболочки:
fp_sqrt (2)
Ожидаемые результаты: (5, 1,414213562373095)
Мой выход: (0 , 1.41421356237309 5) Таким образом, переменная не увеличивается, чтобы показать, сколько итераций я прошел в цикле.
Если я выберу это из области действия, разве у меня не будет двух операторов возврата? разве это не проблема? –
Код кажется несколько смущенным. Либо сделайте что-нибудь рекурсивное, либо используйте цикл. Не пытайтесь использовать оба. Если рекурсивный, это должны быть вызовы функций, которые вы пытаетесь подсчитать, а не итерации цикла. –
Извините, что задание хочет просто отредактировать код внутри цикла while и ничего не изменить. это то, что я придумал, но да ... есть ли лучший способ сделать то, что я пытаюсь сделать? –