我已经为collat​​z模式编写了一个用于数字的python代码,我想计算达到1所需的步骤数我该怎么办?

问题描述

def collatz(n):
    while n > 1:
        print(n,end=' ')
        if (n % 2):
            # n is odd
            n = 3*n + 1
        else:
            # n is even
            n = n//2
    print(1,end='')
 
 
n = int(input('Enter n: '))
print('Sequence: ',end='')
collatz(n)

解决方法

只需添加一个计数器

def collatz(n):
    counter = 0
    while n > 1:
        counter += 1
        print(n,end=' ')
        if (n % 2):
            # n is odd
            n = 3*n + 1
        else:
            # n is even
            n = n//2
    print(1,end='\n')
    print("Number of steps until convergance :" + str(counter))
 
 
n = int(input('Enter n: '))
print('Sequence: ',end='')
collatz(n)