1 #coding=GBK 2 ''' 3 编写一个名为collatz()的函数, 它有一个名为number的参数。 如果参数是偶数, 那么collatz()就打印出number // 2, 并返回该 4 值。 如果number是奇数, collatz()就打印并返回3 * number + 1。 5 然后编写一个程序, 让用户输入一个整数, 并不断对这个数调用collatz(), 直到函数返回值1( 令人惊奇的是, 这个序列对 6 于任何整数都有效, 利用这个序列, 你迟早会得到1! 既使数学家也不能确定为什么。 你的程序在研究所谓的“Collatz序列”, 它 7 有时候被称为“最简单的、 不可能的数学问题”) 。 8 ''' 9 def collatz(number): 10 while True: 11 if number%2==0: 12 number=number/2 13 print(number) 14 elif number%2==1 and number!=1: 15 number=3*number+1 16 print(number) 17 elif number==1: 18 break 19 collatz(int(input('请输入一个整数')))
备注里要求不断调用函数collatz(),我这个只调用了一次
这个是不断调用函数的写法:
1 #coding=GBK 2 number=int(input('请输入一个整数')) 3 def collatz(a): 4 global b 5 if a%2==0: 6 a=a/2 7 print(a)#最后当a等于2的时候执行2/2,并打印出1所以不用elif a==1 8 b=a 9 elif a%2==1 and a!=1: 10 a=a=3*a+1 11 print(a) 12 b=a 13 #elif a==1: 14 #print('dadsda') 15 while number!=1: 16 collatz(number) 17 number=b