#python
Вопрос:
Я новичок в кодировании и пытаюсь сделать гипотезу коллатца.
Я думаю, что я уже сделал это, я не могу закодировать способ подсчитать, сколько «шагов» требуется для 1.
Это код, который я уже сделал.
n = int(input("Enter a number!"))
def lothar(n):
print(n)
if n == 1:
return i
if n % 2 == 0:
n = n / 2
else:
n = ((n*3) 1)
return lothar(n)
print(lothar(n))
Я хочу считать, используя структуру while.
Например: в номере 4 требуется 3 шага.
4
2
1.
Комментарии:
1. В
return i
том, откуда этоi
берется?2. Это воображаемая единица i .
Ответ №1:
Есть несколько способов подсчета шагов, но я решил удалить рекурсию и вместо этого использовать цикл:
n = int(input("Enter a number: "))
def lothar(n):
steps = [n]
while n > 1:
if n % 2 == 0:
n = n // 2
else:
n = ((n*3) 1)
steps.append(n)
return steps
sequence = lothar(n)
print(sequence)
print(str(len(sequence)-1) " step(s)")
Это вернет последовательность, что затем означает, что мы можем отобразить последовательность, а также вывести количество шагов (т. Е. длину последовательности минус один).
Например:
Enter a number: 9
[9, 28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
19 step(s)
Ответ №2:
Введите значение while loop
в функцию и укажите count
переменную для подсчета.
n = int(input("Enter a number!"))
count = 1
def lothar(n,count):
while n != 1:
if n % 2 == 0:
count = 1
n = n / 2
else:
count = 1
n = ((n*3) 1)
return count
print(lothar(n,count))
Поскольку результат, который вы хотите получить, должен включать 4 , счетчик будет добавлен еще раз, но если вы хотите подсчитать количество loops
, вам следует установить значение 0 для расчета.
Комментарии:
1. большое вам спасибо, «я», которое я там оставил, было потому, что я пытался сделать именно это. БОЛЬШОЕ ВАМ СПАСИБО.