у меня довольно трудно понять, что происходит здесь не так:функция Рекурсия не работает должным образом
class iterate():
def __init__(self):
self.length=1
def iterated(self, n):
if n==1:
return self.length
elif n%2==0:
self.length+=1
self.iterated(n/2)
elif n!=1:
self.length+=1
self.iterated(3*n+1)
Например,
x=iterate()
x.iterated(5)
выходы None
. Он должен вывести 6, потому что длина будет выглядеть так: 5 -> 16 -> 8 -> 4 -> 2 -> 1
После выполнения некоторой отладки, я вижу, что возвращается self.length
правильно, но что-то не так в рекурсии. Я не совсем уверен. Спасибо за любую помощь.
Я любопытно, какая версия Python вы используете? Обычно я использую Python 2.6, а init должен быть объявлен как __init__. Но это явно работает для вас, так что мне интересно, какая версия Python позволяет это – inspectorG4dget
@ inspectorG4dget - предоставленный исходный код имел двойные подчеркивания вокруг 'init', но они были первоначально удалены форматированием и не отображались (что я ' m угадывание - это то, что также произошло с вашим комментарием). Я исправил форматирование для вопроса сейчас. –
@ire_and_curses: Кажется. Похоже, двойное подчеркивание - это форматирование текста для смелых! – inspectorG4dget