编写一个名为collatz()的函数,它有一个名为number的参数:
如果参数是偶数,那么collatz()就打印出number//2,并返回该值;
如果number是奇数,那么collatz()就打印,并返回3*number+1。
然后编写一个程序,让用户输入一个整数,并不断对这个数调用,collatz(),直到函数返回值1。
这个程序的输出看起来应该像这样:
Enter number: 3
3
10
5
16
8
4
2
1
我编写的程序如下:
python版本:3.8.1
def collatz(number):
if number%2==0:
print(number//2)
return number//2
elif number%2==1:
print(number*3+1)
return number*3+1
print('enter a number')
number=int(input())
while True:
if collatz(number)!=1:
number=collatz(number)
else:
break
输出结果却是这样的
enter a number
3
10
10
5
5
16
16
8
8
4
4
2
2
1
在网上查过类似的疑问,说是调用了两次,但还是有些不明白。