测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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)
上一题 下一题