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
网友评论