Python学习笔记 16
程序员文章站
2022-06-16 21:26:05
...
简单递归思想
自己总结的:递归就是将大的问题分解为相同的小问题,方法内重复调用自己
# 求10的阶乘(10!)
def factorial ( n ) :# for循环方法
result = n
for i in range(1,n) :
result *= i
return result
n = 4
print( factorial(n) )
# 递归就是将大的问题分解为相同的小问题,重复调用自己
# 两个主要条件:
# - 1.基线条件(递归结束条件)
# - 2.递归条件(继续进行条件)
# 递归编写难,但阅读容易,循环编写容易,阅读稍难
def fn( n ) :
if n ==1 :
return 1
else :
return n* fn(n-1)
n = 5
print( fn( n ) )
# 创建power函数进行幂运算 n**i
def power (n:int , i:int) ->int :
'''
幂运算n的i次方 n**i
参数:n为底数
i为指数
'''
if i==1 :
return n
else :
return n*power(n , i-1)
print( power(3,2) )
print( power(2,3) )
练习:判断回文字符串
# 检查回文字符串
# 自己想的方法(没有想到切片,把它转化为列表删除的方法,能实现但有点麻烦)
def Palindrome( s:str ) ->bool :
'''
检查一个字符串是否是回文字符串
参数s是待检查的字符串
'''
s=list(s)
if s[0] == s[-1] :
del s[0]
if s==[] :
return True
del s[-1]
if s==[] :# 写两次判断是因为字符串的长度为奇数或者偶数
return True
return Palindrome(s)
else :
return False
a = 'abcga'
print( Palindrome(a) )
# 老师讲的方法,用切片简单许多
def hui_wen (s) :
if len(s) <2 :
return True
elif s[0] != s[-1] :
return False
else :
return hui_wen(s[1:-1])
a = 'abvba'
print( hui_wen(a) )
下一篇: File类的判断功能