首页 > 编程语言 >Python 函数递归教程

Python 函数递归教程

时间:2023-01-06 17:14:40浏览次数:46  
标签:教程 调用 return 函数 递归 Python res print

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学习交流QQ群:153708845
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)

标签:教程,调用,return,函数,递归,Python,res,print
From: https://www.cnblogs.com/djdjdj123/p/17031009.html

相关文章

  • Git管理版本详细教程
    一、远程仓库与本地仓库关联的逻辑关系Remote: 远程仓库,即你在 Github 或者 Gitee 等平台上创建的项目仓库;Repository: 本地仓库,你可以认为就是我们拉取项目后生......
  • Overt.GrpcTemplate.Service 模板使用教程
     1.Overt.GrpcTemplate.Service .NetCore3.1版本模板名称改成 Overt.GrpcTemplateV3.Service源码地址:https://github.com/overtly/template.gitidentity:Ov......
  • 微信开发者工具安装扩展插件教程
    第一步:打开微信开发者工具,然后点击菜单栏的设置  第二步:点击通用设置       第三步:进入设置后,点击扩展        第......
  • SVN使用教程
    常见图标状态1、常规:绿色圈带白色对勾,主要是表示自己电脑上的文件或者文件夹与SVN服务器上对应的文件一致,在自己电脑没有进行任何修改。2、修改:红色圈带白色感叹号,当你......
  • python_selenium元素定位_xpath(2)
     selenium自动化脚本最基础的就是元素定位和元素操作,下面就以百度为例介绍最常见的xpath定位方式基本定位方式:以百度的搜索框为例fromseleniumimportwebdriverim......
  • python + selenium 常用公共方法封装
     selenium环境配置及浏览器驱动的安装:https://www.cnblogs.com/gancuimian/p/16435300.htmluiautomator2常用公共方法封装见之前的帖子:https://www.cnblogs.com/gancu......
  • C++ 不知树系列之二叉堆排序(递归和非递归实现上沉、下沉算法)
    1.前言什么是二叉堆?二叉堆是有序的完全二叉树,在完全二叉树的基础上,二叉堆提供了有序性特征:二叉堆的根结点上的值是整个堆中的最小值或最大值。当根结点上的值......
  • Python爬取往期股票数据,分析中奖规律!
    快过年了,手头有点紧,但是作为一个男人,身上怎么能够没有大把钞票呢?于是我决定用Python来分析一波股票,赢了会所嫩*,输了下海干活!好了,上面是我吹牛逼的,不过确实有小伙......
  • python 调试 qml
    1.设置pycharm的parameters-qmljsdebugger=port:10002,block 2.python启动调试:点击debug按钮   3.设置qtcreaterqtcreater中打开要调试的文件,打上断点......
  • CAD中如何调整文字角度?CAD文字角度调整教程
    在CAD设计过程中,当绘制的图纸中有些CAD文字角度不合适想要调整其角度时,该如何操作呢?本文小编就以浩辰CAD软件为例来给大家分享一下CAD文字角度调整的方法技巧吧!CAD文字角......