欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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