ITPub博客

首页 > 应用开发 > IT综合 > Collatz序列

Collatz序列

原创 IT综合 作者:路途中的人2012 时间:2016-12-24 14:10:26 0 删除 编辑
问题:
编写一个名为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')

要正确理解递归的概念。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29067253/viewspace-2131315/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-01-08

  • 博文量
    495
  • 访问量
    768348