Python学习笔记 16

简单递归思想

自己总结的:递归就是将大的问题分解为相同的小问题,方法内重复调用自己

# 求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) )

猜你喜欢

转载自blog.csdn.net/weixin_44011689/article/details/89439468