Collat​​z循环结构

请帮助我了解我做错了什么。问题是


Collatz序列编写一个名为collatz()的函数,该函数具有一个名为number的参数。如果number是偶数,则collatz()应该打印数字// 2并返回该值。如果number为奇数,则collatz()应该打印并返回3 * number + 1。


然后编写一个程序,让用户输入一个整数,并继续对该数字调用collatz(),直到该函数返回值1。您将达到1!即使是数学家也不确定为什么。您的程序正在探索所谓的Collatz序列,有时称为“最简单不可能的数学问题”。)


记住要使用int()函数将input()的返回值转换为整数;否则,它将是一个字符串值。


提示:即使数字%2 == 0,整数也是偶数;如果数字%2 == 1,则整数是奇数。


def collatz(number):

    if number%2==0:

        print(number//2)

    else:

        print(3*number+1)


x = int(input('print num'))

while TRUE:

    if collatz(x)!=1:

        break


千万里不及你
浏览 174回答 3
3回答

HUWWW

您必须打印并返回函数collatz(num):def collatz(number):    """prints and returns the next number in the Collatz sequence    """    if number % 2 == 0:        next_collatz_number = number // 2    else:        next_collatz_number = 3 * number + 1    print(next_collatz_number)    return next_collatz_numberx = int(input('print num'))while True:    x = collatz(x)    if x == 1:        break

慕村225694

正如其他人的评论所说,你的函数collatz()必须返回一个整数还,被送入collatz()一次。在您已经完成的工作的基础上,我们可以collatz_sequence(x)重复调用该函数collatz()以获得所需的结果:def collatz(x):    if x % 2 == 0:        a = x//2    else:        a = 3*x+1    print(a)    return adef collatz_sequence(x):    print(x)    while x!=1:        x=collatz(x)这是示例输出:>>> collatz_sequence(6)63105168421

森林海

'''try:     number = int(input('Enter a number:'))     while number != 1:          number = collatz(number)except ValueError:     print('Enter a valid integer')def collatz(num):    if num % 2 == 0:        print(str(num // 2))        return num // 2    else:        print(str(3 * num + 1))        return (3 * num + 1)'''在这段代码中,我匹配了它们的约束(整数约束)并返回了值。我在try块中使用了简单的递归来获取所需的输出。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python