递归的练习课程 | Python从入门到精通:高阶篇之十二

查看上一节:递归的基本用法

上节课留了两个练习,这节课给大家讲一下,同时巩固一下递归的用法。

练习1、创建一个函数 power 来为任意数字做幂运算 n* * i
用数据10^5举例说明一下:

#   10 ** 5 = 10 * 10 ** 4
#   10 ** 4 = 10 * 10 ** 3
#   ...
#   10 ** 1 = 10

代码展示:

def power(n , i):
    '''
        power()用来为任意的数字做幂运算

        参数:
            n 要做幂运算的数字
            i 做幂运算的次数
    '''
    # 基线条件
    if i == 1:
        # 求1次幂
        return n
    # 递归条件
    return n * power(n , i-1)
print(power(8,6))    

执行结果为:
递归的练习课程 | Python从入门到精通:高阶篇之十二

练习2、创建一个函数,用来检查一个任意的字符串是否是回文字符串,如果是返回True,否则返回False。
回文字符串,字符串从前往后念和从后往前念是一样的。
举例说明:

#       abcba
#   abcdefgfedcba
#   先检查第一个字符和最后一个字符是否一致,如果不一致则不是回文字符串
#       如果一致,则看剩余的部分是否是回文字符串
#   检查 abcdefgfedcba 是不是回文
#   检查 bcdefgfedcb 是不是回文
#   检查 cdefgfedc 是不是回文
#   检查 defgfed 是不是回文
#   检查 efgfe 是不是回文
#   检查 fgf 是不是回文
#   检查 g 是不是回文

代码展示:

def hui_wen(s):
    '''
        该函数用来检查指定的字符串是否回文字符串,如果是返回True,否则返回False

        参数:
            s:就是要检查的字符串
    '''
    # 基线条件
    if len(s) < 2 :
        # 字符串的长度小于2,则字符串一定是回文
        return True
    elif s[0] != s[-1]:
        # 第一个字符和最后一个字符不相等,不是回文字符串
        return False    

    # 递归条件    
    # 用切片检查除去第一个和最后一个字符后的新字符串
    return hui_wen(s[1:-1])

print(hui_wen('abcdefgfedcba'))    

执行结果为:
递归的练习课程 | Python从入门到精通:高阶篇之十二
即,‘abcdefgfedcba’为回文字符串。

也可以合并递归条件,但是不方便阅读,不建议使用,了解即可。

def hui_wen(s):
#     '''
#         该函数用来检查指定的字符串是否回文字符串,如果是返回True,否则返回False

#         参数:
#             s:就是要检查的字符串
#     '''
     # 基线条件
    if len(s) < 2 :
        # 字符串的长度小于2,则字符串一定是回文
        return True
     # 递归条件    
     return s[0] == s[-1] and hui_wen(s[1:-1])
print(hui_wen('abcdefgfedcba'))    

点击查看配套视频教程

获取更多内容,请订阅Python学习站官方技术圈!

上一篇:递归 | Python从入门到精通:高阶篇之十一


下一篇:高阶函数 | Python从入门到精通:高阶篇之十三