Python 函数递归教程
2023-02-19 12:24:31 时间
1.什么是函数递归
函数的嵌套调用:一个函数里面又写了一个函数。
函数的递归调用:他是一种特殊的嵌套调用,他也是在函数里面调用函数,但是他在函数体内调用的函数时他自己本身。
如果递归函数不断的在函数体内调用函数自己本身,如果我们不给终止条件来结束程序运行的话,程序就会进入死循环,那这个时候程序运行将会报错,因此我们应该给递归函数一个明确的结束条件。
def foo():
print('from foo')
foo()
foo() # 此时程序会进入死循环
2.直接调用
直接调用指的是:直接在函数内部调用函数自身。
1.利用传参的方式来计算n个人后的第n个人的年龄
2.用到变量作用域的知识点(global、可变数据类型、)
ls = [16]
def func(n):
if n == 0:
return ls[0]
res = func(n-1)+2
return res
print(func(5))
3.间接调用
间接调用指的是:不在原函数体内调用函数自身,而是通过其他的方法间接调用函数自身。
def name():
print('hello,xichen')
age(20)
def age(n):
print('my name is ',n)
name()
print(name())
print(age(20))
4.递归需要注意
- 递:一层一层的递归调用,每一次进行下一次的递归的时候问题的规模都必须是在减小的
- 归:必须要又一个明确的结束条件,在满足该条件开始一层一层回溯。
在不断的重复过程之后,可以得到一个最终的结果
列题
给定一个只包括 '(',')','{','}','','' 的字符串,判断字符串是否有效。
有效字符串需满足:左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。
示例 1: 示例 2: 示例 3: 示例 4: 示例 5:
输入: "()" 输入: "()[]{} 输入: "(]" 输入: "()" 输入: "{[]}"
输出: true "输出: true 输出: false 输出: false 输出: True'''
# python 学习交流群:711312441
def isValid(s: str) -> bool:
print(s)
# s = ''
if not s: # 判断s是否为空
return True
if s.find('[]') != -1 or s.find('{}') != -1 or s.find('()') != -1: # 证明s里面有 ()/[]/{}
if '{}' in s:
s = s.replace('{}', '')
if '[]' in s:
s = s.replace('[]', '')
if '()' in s:
s = s.replace('()', '')
if s == '': # s = '[]'
return True
res = isValid(s)
print('res:',res)
if not res:
return False
else:
return False
return True
res = isValid(s)
print(res)
相关文章
- 基于Python的人脸识别考勤监控
- Python答题游戏
- Python调用百度API实现图像识别
- Python全栈疫情分析项目
- Python-基础-if语句快速入门
- Python-基础-循环语句快速入门
- Python-GUI签名
- 【2】VScode 搭建python和tensorflow环境
- python 简易时钟
- 【1】windows系统如何安装后缀是whl的python库
- 【2】超级详细Python-matplotlib画图,手把手教你画图!(线条颜色、大小、线形、标签)
- 【4】python读写文件操作---详细讲解!
- 【2】Anaconda下:ipython文件的打开方式,Jupyter Notebook中运行.py文件,快速打开ipython文件的方法!
- 【编写环境一】遇到常见python函数处理方式
- 【编写环境二】python库scipy.stats各种分布函数生成、以及随机数生成【泊松分布、正态分布等】
- Python xlwt数据保存到 Excel中以及xlrd读取excel文件画图
- 强化学习技巧三:Python多进程
- 强化学习技巧五:numba提速python程序
- 【7】python_matplotlib 输出(保存)矢量图方法;画图时图例说明(legend)放到图像外侧;Python_matplotlib图例放在外侧保存时显示不完整问题解决
- 【8】python_matplotlib改变横坐标和纵坐标上的刻度(ticks)、sagemath-list_plot()调整图例(legend)中点的数量、Matplotlib画各种论文图