先写不加函数不加循环的计算内容
number = int(input('输入一个整数?\n'))
if number % 2 == 0:
number = number // 2
else:
number = 3 * number + 1
print(number)
执行结果
输入一个整数? 3 10
结果ok
加上循环
n = int(input('输入一个整数?\n'))
while n != 1:
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
print(n)
if n == 1:
break
执行结果后
输入一个整数? 3 10 5 16 8 4 2 1
结果ok
开始增加函数
代码运行但是没有循环
def collatz(number):
if number % 2 == 0:
number = number // 2
else:
number = 3 * number + 1
#print(number)
return number
n = int(input('输入一个整数?\n'))
collatz(n)
执行结果
输入一个整数? 3 10
结果ok
增加循环
def collatz(number):
if number % 2 == 0:
number = number // 2
else:
number = 3 * number + 1
print(number)
return number
n = int(input('输入一个整数?\n'))
while n != 1:
collatz(n)
if n == 1:
break
print(n)
执行结果无限循环
且数列结果不对?问题出在哪里?
对 return函数理解有问题