Day 4 hailstone有穷性的证明

2020-05-25  本文已影响0人  快乐的老周
def hailstone(n):
    length = 1
    while(1 < n):
        if n % 2 == 0:
            n = n/2
        else:
            n = n*3 + 1
        length += 1
    return length

以上这个 hailstone 函数满足有穷性吗?意思是对于任意的 n, while 循环都会执行有限次而退出吗?

根据邓工的课程,我们得知:

至今学术界都无法证明对于任意的 ,一定满足:hailstone < 无穷大

今天 Day 4 的练习题:请列举几个不同的 n 值(如 n= 120, 7, 27),分别求出 hailstone 的返回值,体会证明算法有穷性的困难。

def hailstone(n):
    length = 1
    while(1 < n):
        if n % 2 == 0:
            n = n/2
        else:
            n = n*3 + 1
        length += 1
    return length

if __name__ =='__main__':
    list1 = [120, 7, 27]
    for i in list1:
        result = hailstone(i)
        print(f'n = {i} : hailstone({i}) = result')


n = 120 : hailstone(120) = result
n = 7 : hailstone(7) = result
n = 27 : hailstone(27) = result
上一篇下一篇

猜你喜欢

热点阅读