冰雹猜想 输入数值,求返回长度

问题遇到的现象和发生背景 完成函数hailstone(k),对应正整数k,返回其hailstone序列的长度;

请在源文件hailstone.py中 #todo1下面添加代码;
1.2 完成函数find_longest_hailstone(n),返回区间[2, n+1)中hailstone序列最长的长度及相应的整数。
请在源文件hailstone.py中 #todo2下面添加代码;

def hailstone(k):
"""return the length of hailstone of k.
"""
length = 1
# todo1: 请在下面补写代码,完成函数功能

return length

def find_longest_hailstone(n):
'''返回区间[2, n+1)中hailstone序列最长的整数值及其序列长度
'''
value, longest = 1, 1
# todo2: 请在下面补写代码,完成函数功能

return value, longest

def main():
n = 100000 #int(input("Please enter a positive number:"))
longest, value = find_longest_hailstone(n)
print(f"hailstone: range={n} longest={longest} value={value}")

if name == "main":
measure_time(main, 1)

你题目的解答代码如下:

def hailstone(k):
    """return the length of hailstone of k.  """
    length = 1
    # todo1: 请在下面补写代码,完成函数功能
    while k!=1:
        length += 1
        if k%2==1:
            k = k*3+1
        else:
            k = k/2
    return length
def find_longest_hailstone(n):
    '''返回区间[2, n+1)中hailstone序列最长的整数值及其序列长度'''
    value, longest = 1, 1
    # todo2: 请在下面补写代码,完成函数功能
    for i in range(2,n+1):
        a = hailstone(i)
        if a > longest:
            longest = a
            value = i
    return value, longest
def main():
    n = 100000 #int(input("Please enter a positive number:"))
    longest, value = find_longest_hailstone(n)
    print(f"hailstone: range={n} longest={longest} value={value}")

if __name__ == "__main__":
    # measure_time(main, 1)
    main()

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img