Python 函数递归教程

简介: Python 函数递归教程

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)
相关文章
|
2月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
150 67
|
18天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
26 3
|
22天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
33 2
|
7天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
9 0
|
1月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
58 18
|
1月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
77 8
|
1月前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
132 7
|
1月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
52 4
|
1月前
|
数据可视化 Python
Seaborn 教程
Seaborn 教程
52 5
|
1月前
|
Python
Python中的函数
Python中的函数
52 8

热门文章

最新文章