码题集 角谷定理

角谷定理:对于一个大于1的整数n,如果n是偶数,则n = n / 2。如果n是奇数,则n = 3 * n +1。反复操作后,n一定为1。

问题:给出一个数n,如果它能在x次角谷变换内变成1,那么就是成功的,否则就是不成功的
码题集 角谷定理_第1张图片

#定义递归函数,传入两个参数,number代表当前数字,times代表剩余次数
def kakutani(number, times):
    if number == 1 and times >= 0:
        return True
    elif times == 0:
        return False
    else:
        if number % 2 == 0: #偶数则直接除以2,'//'代表整除
            return kakutani(number//2, times-1)
        else: #奇数则乘3后再加1
            return kakutani(number*3+1, times-1)

n, x = map(int, input().split()) #输入数据
if kakutani(n, x):
    print("yes")
else:
    print("no")

你可能感兴趣的:(码题集,oj赛题,数据结构,python,算法)