```python
number = int(input('输入一个整数?\n'))
while number != 1:
if number % 2 == 0:
number = number // 2
else:
number = 3 * number + 1
print(number)
if number == 1:
break
def collatz(number):
if number % 2 == 0:
number = number // 2
else:
number = 3 * number + 1
return number
n = int(input('输入一个整数?\n'))
while n != 1:
collatz(n)
print(n)
if n == 1:
break
以上两个代码结果有什么不一样吗?
我只是有def写了一个函数 collatz就不执行了为啥啊?
还有人说return是这样写的但是其实和第二段代码结果一样并不计算collatz为啥呢
def collatz(number):
if number % 2 == 0:
return number // 2
elif number % 2 == 1:
return 3 * number + 1
n = int(input('输入一个整数?\n'))
while n != 1:
collatz(n)
print(n)
if n == 1:
break
要写 n = collatz(n)啊,因为你这个函数是返回处理后的值,还要再赋值给 n
描述
Collatz猜想也叫3n+1猜想,给一个正整数,如果是偶数,则减半;如果是奇数,则变为它的三倍加一。直到变为1停止。猜想对于所有正整数经过足够多次变换最终达到1。
输入格式
输入一个正整数,每一步计算都输出相应的计算操作。输入使用input(),不要增加额外的提示信息。
输出格式
输出每一步计算结果。
org = eval(input())
while org != 1:
if org%2 == 0:
org = org/2
print("{:.1f}".format(org))
else:
org = 3 * org + 1
print("{:.1f}".format(org))