Collatz序列

问题:
编写一个名为collatz()的函数,它有一个名为number的参数。如果参数是偶数,那么collatz()就打印出number//2,并返回该值。如果number是奇数,collatz()就打印并返回3*number+1。然后编写一个程序,让用户输入一个整数,并不断对这个数调用collatz(),直到函数返回值1

错误解答:

点击(此处)折叠或打开

  1. def collatz(number):
  2.         #global number
  3.         if number==1:
  4.                 number=1
  5.                 return number
  6.         elif number%2==0:
  7.                 number=number//2
  8.                 print(number)
  9.                 collatz(number)
  10.         else:
  11.                 number=3*number+1
  12.                 print(number)
  13.                 collatz(number)

  14.         
  15. print('Please enter a number what you want:')
  16. while True:
  17.         try:
  18.                 number=int(input())
  19.                 number=collatz(number)
  20.                 print(number)
  21.                 if number==1:
  22.                         break
  23.         except ValueError:
  24.                 print('You must enter a integer')

正确解答:

点击(此处)折叠或打开

  1. def collatz(number):
  2.         if number==1:
  3.             number=1
  4.             return number
  5.         elif number%2==0:
  6.             number=number//2
  7.             print(number)
  8.             return collatz(number)
  9.         else:
  10.             number=3*number+1
  11.             print(number)
  12.             return collatz(number)

  13.             
  14. print('Please enter a number what you want:')
  15. while True:
  16.         try:
  17.             number=int(input())
  18.             number=collatz(number)
  19.             print('Not in function: %d' % number)
  20.             if number==1:
  21.                 break
  22.         except ValueError:
  23.             print('You must enter a integer')

要正确理解递归的概念。


请使用浏览器的分享功能分享到微信等