Python的递归函数
1 递归函数的特点
特点
-
一个函数 内部 调用自己
-
代码特点
-
函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同
-
当 参数满足一个条件 时,函数不再执行
-
这个非常重要,通常被称为递归的出口,否则 会出现死循环!
-
示例代码
def sum_numbers(num): print(num) # 递归的出口很重要,否则会出现死循环 if num == 1: return sum_numbers(num - 1) sum_numbers(3)
2 递归案例 —— 计算数字累加
需求
-
定义一个函数
sum_numbers
-
能够接收一个
num
的整数参数 -
计算 1 + 2 + ... num 的结果
def sum_numbers(num): if num == 1: return 1 # 假设 sum_numbers 能够完成 num - 1 的累加 temp = sum_numbers(num - 1) # 函数内部的核心算法就是 两个数字的相加 return num + temp print(sum_numbers(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'))