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