FIsh论坛《零基础入门学习Python》| 第023、024讲 课后测试题及答案

FIsh论坛《零基础入门学习Python》|第023、024讲:递归:这帮小兔崽子、汉诺塔 | 课后测试题及答案

动动手

  1. 使用递归编写一个十进制转换为二进制的函数(要求采用“取2取余”的方式,结果与调用bin()一样返回字符串形式)。
def Bin(x):
	if x==0:
		return '0'
	elif x==1:
		return '1'
	else:
		return Bin(x//2)+str(x%2)
print(Bin(5))
输出结果:
101


1.写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。

def fun(x):
	if x//10==0:
		return [x]
	else:
		return fun(x//10)+[x%10]
print(fun(1995))


输出结果:
[1, 9, 9, 5]

  1. 还记得求回文字符串那道题吗?现在让你使用递归的方式来求解,亲还能骄傲的说我可以吗?
def fun(str1):
	if len(str1)==1:
		return 1
	elif len(str1)==2:
		if str1[1]==str1[0]:
			return 1
		else:
			return 0
	else:
		if str1[0]==str1[len(str1)-1] and fun(str1[1:len(str1)-1])==1:
			return 1
		else:
			return 0

print(fun("上海自来水来自海上"))
print(fun("上海海上"))

输出结果:
1
1

小问题:

str = 'abcdefg'

print(str[1:])
print(len(str))
print(len(str)-1)
print(str[1:len(str)])
#print(str[len(str)])错误
print(str[len(str)-1])
print(str[1:(len(str)-1)])
print(str[6])
print(str[1:6])#包括起始位置不包括结束位置
输出结果:
bcdefg
7
6
bcdefg
g
bcdef
g
bcdef


  1. 使用递归编程求解以下问题:
    有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
def age(n):
    if n == 1:
        return 10
    else:
        return age(n-1) + 2


print(age(5))
输出结果:
18


  1. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!
    递归,print(str[1:6])#包括起始位置不包括结束位置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值