几个递归示例

来源:互联网 发布:淘宝店铺装修模块代码 编辑:程序博客网 时间:2024/06/10 18:20

一、使用递归编写一个十进制转换为二进制的函数(要求采用“取2取余”的方式,结果与调用bin()一样返回字符串形式)。
版本1:
有点小问题!

>>> def Bin(n):    res = "0b"    if n:        res = Bin(n//2) + str(n%2)    return res>>> Bin(127)'0b1111111'>>> Bin(0)'0b0'

版本2:
有点小问题!

>>> def Bin(n):      temp = ''      if n:          temp = Bin(n//2)          temp += str(n%2)          return temp  #此处需要返回temp,与版本1不同    else:          return temp>>> Bin(0)''>>> Bin(1)'1'

改进版3:

>>> def Bin(n):    if n==0 or n==1:        return "0b"+str(n)    if n>1:        return Bin(n//2) + str(n%2)>>> Bin(0)'0b0'>>> Bin(1)'0b1'>>> Bin(8)'0b1000'>>> bin(8)'0b1000'

二、写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==>[1, 2, 3, 4, 5]
版本1:
有点小问题!

>>> def get_digits(n):    res = []    if n :        res = get_digits(n//10) + [n%10]    return res>>> get_digits(1)[1]>>> get_digits(10)[1, 0]>>> get_digits(0)[]

版本2:

>>> def get_digits(n):    if n//10 == 0:        return [n]    else:        return get_digits(n//10) + [n%10]>>> get_digits(0)[0]>>> get_digits(1)[1]>>> get_digits(10)[1, 0]>>> get_digits(7007)[7, 0, 0, 7]>>> str(7007)'7007'>>> list(str(7007))['7', '0', '0', '7']

三、编写程序: 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?(用函数实现)

>>> def getAge(n):      if n == 1:          return 10      if n > 1:          age = getAge(n-1) + 2          return age>>> getAge(5)18
原创粉丝点击