用Python实现“Collatz序列”


 

 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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM