学Python的015天

原创:XIAO油菜花
学习进度记录:
《零基础入门学习Python》P25:递归:小兔子,汉诺塔
《Python开发入门与爬虫项目实战》:Python中的函数:递归查找

实战
今天的课程竟然没有课后习题哦,直接进入实战,有没有感到惊喜和意外?O(∩_∩)O哈哈~
0.使用递归编写一个十进制转换为二进制的函数(要求采用“取2取余”的方式,结果与调用bin()一样返回字符串形式)。

def bin(x):
    result = ''
    
    if dec:
        result = bin(x//2)
        return result + str(x%2)
    else:
        return result

1.写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==> [1, 2, 3, 4, 5]
解题思路:利用除以10取余数的方式,每次调用get_digits(n//10),并将余数存放到列表中即可。要注意的是结束条件设置正确。

result = []
def get_digits(n):
        if n > 0:
            result.insert(0, n%10)
            get_digits(n//10)

get_digits(12345)
print(result)

2.还记得求回文字符串那道题吗?现在让你使用递归的方式来求解,亲还能骄傲的说我可以吗:判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)

def palindrome(n, start, end):
    if start > end:
        return 1     
    else:
        return palindrome(n, start+1, end-1) if n[start] == n[end] else 0
        
string = input('请输入一串字符串:')
length = len(string)-1

if palindrome(string, 0, length):
    print('"%s"是回文字符串!' % string)
else:
    print('"%s"不是回文字符串!' % string)

3.使用递归编程求解以下问题:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

def age(n):
    if n == 1:
        return 10
    else:
        return age(n-1) + 2
        
print('哈哈,我知道了,第五个人的年龄是 %d 岁!' % age(5))

如果你关注了我,希望你监督我,鼓励我,与我一起学习,一起成长!❤

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容