几个递归示例

一、使用递归编写一个十进制转换为二进制的函数(要求采用“取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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值