Python中的Collatz序列
假设我们有一个正整数n,我们必须找到其Collatz序列的长度。我们知道Collatz序列是按顺序生成的,当n等于n时,n=n/2,否则n=3n+1。当n=1时,该序列结束。
因此,如果输入像n=13,则输出将是10,因为[13、40、20、10、5、16、8、4、2、1]是这些序列。
为了解决这个问题,我们将遵循以下步骤-
如果num与0相同,则
返回0
长度:=1
而num与1不相同
num:=(num/2)时nummod2为0否则(3*num+1)
长度:=长度+1
返回长度
让我们看下面的实现以更好地理解-
示例
class Solution:
def solve(self, num):
if num == 0:
return 0
length = 1
while num != 1:
num = (num / 2) if num % 2 == 0 else (3 * num + 1)
length += 1
return length
ob = Solution()print(ob.solve(13))输入值
13
输出结果
10