最近看到的一道python算法题:冰雹猜想
做这种算法题,主要是练习思维,在遇到问题的时候,多一种解决方案。
关于冰雹猜想的描述
数学家们曾提出一个著名的猜想——冰雹猜想。
对于任意一个正整数 n,如果 n 是偶数,就把它变成 n // 2;
如果 n 是奇数,就把它变成 3 * n + 1。
按照这个法则运算下去,最终会变成 1。
试问,该数通过几轮变换,会变成 1 呢?
例:
输入5
输出为5
原因如下:
第一轮:5*3+1=16
第二轮:16/2=8
第三轮:8/2=4
第四轮:4/2=2
第五轮:2/2=1
答案为 5
下面是我给出的解决办法:
n = eval(input()) num=0 while n !=1: if n %2==0: n=n//2 else: n=3*n+1 num+=1 print(num)
这个还是属于简易的那种!如果不考虑可读性,基本上2-3行就可以解决问题啦。
标签: