A34181. 数学证明问题上世纪中期,校园里流行一种数学游戏,其规则十分简单:任意取一个自然数,若它是奇数,则把它乘以3加上1,若它是偶数,则除以2。按此规则进行下去,经过若干步的计算就能得到自然数1。这个数学现象至今都没有得到完全的证明,但是可以编程来验证它的正确性。实现上述功能的部分程序代码如下,请补充完成空白处的内容。step = 1midlist = []def subwork(n): global …
题目描述
数学证明问题
上世纪中期,校园里流行一种数学游戏,其规则十分简单:任意取一个自然数,若它是奇数,则把它乘以3加上1,若它是偶数,则除以2。按此规则进行下去,经过若干步的计算就能得到自然数1。这个数学现象至今都没有得到完全的证明,但是可以编程来验证它的正确性。
实现上述功能的部分程序代码如下,请补充完成空白处的内容。
step = 1
midlist = []
def subwork(n):
global step
if n == 1:
return step
elif n % 2 == 0:
n =______①______
midlist. append(n)
step += 1
subwork(______②______)
return step
elif n % 2 != 0:
n =______③______
midlist. ______④______
step += 1
subwork(______⑤______)
return step
cur_num = int(input("请输入一个数字:"))
subwork(cur_num)
print(midlist)
print(step)
参考答案
step = 1
midlist = []
def subwork(n):
global step
if n == 1:
return step
elif n % 2 == 0:
n = n / 2
midlist.append(n)
step += 1
subwork(n)
return step
elif n % 2 != 0:
n = n * 3 + 1
midlist.append(n)
step += 1
subwork(n)
return step
cur_num = int(input("请输入一个数字: "))
subwork(cur_num)
print(midlist)
print(step)