翼度科技»论坛 编程开发 python 查看内容

Python 函数递归教程

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
1.什么是函数递归

函数的嵌套调用:一个函数里面又写了一个函数。
函数的递归调用:他是一种特殊的嵌套调用,他也是在函数里面调用函数,但是他在函数体内调用的函数时他自己本身。
如果递归函数不断的在函数体内调用函数自己本身,如果我们不给终止条件来结束程序运行的话,程序就会进入死循环,那这个时候程序运行将会报错,因此我们应该给递归函数一个明确的结束条件。
  1. def foo():
  2.     print('from foo')
  3.     foo()
  4. foo()  # 此时程序会进入死循环
复制代码
2.直接调用

直接调用指的是:直接在函数内部调用函数自身。
1.利用传参的方式来计算n个人后的第n个人的年龄
2.用到变量作用域的知识点(global、可变数据类型、)
  1. ls = [16]
  2. def func(n):
  3.     if n == 0:
  4.         return ls[0]
  5.     res = func(n-1)+2
  6.     return res
  7. print(func(5))
复制代码
3.间接调用

间接调用指的是:不在原函数体内调用函数自身,而是通过其他的方法间接调用函数自身。
  1. def name():
  2.     print('hello,xichen')
  3.     age(20)
  4. def age(n):
  5.     print('my name is ',n)
  6.     name()
  7.    
  8. print(name())
  9. print(age(20))
复制代码
4.递归需要注意


  • 递:一层一层的递归调用,每一次进行下一次的递归的时候问题的规模都必须是在减小的
  • 归:必须要又一个明确的结束条件,在满足该条件开始一层一层回溯。
在不断的重复过程之后,可以得到一个最终的结果
列题
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。
示例 1: 示例 2: 示例 3: 示例 4: 示例 5:
输入: "()" 输入: "()[]{} 输入: "(]" 输入: "([)]" 输入: "{[]}"
输出: true "输出: true 输出: false 输出: false 输出: True'''
  1. # Python学习交流QQ群:153708845
  2. def isValid(s: str) -> bool:
  3.     print(s)
  4.     # s = ''
  5.     if not s:  # 判断s是否为空
  6.         return True
  7.     if s.find('[]') != -1 or s.find('{}') != -1 or s.find('()') != -1:  # 证明s里面有 ()/[]/{}
  8.         if '{}' in s:
  9.             s = s.replace('{}', '')
  10.         if '[]' in s:
  11.             s = s.replace('[]', '')
  12.         if '()' in s:
  13.             s = s.replace('()', '')
  14.         if s == '':  # s = '[]'
  15.             return True
  16.         res = isValid(s)
  17.         print('res:',res)
  18.         if not res:
  19.             return False
  20.     else:
  21.         return False
  22.     return True
  23. res = isValid(s)
  24. print(res)
复制代码
来源:https://www.cnblogs.com/djdjdj123/p/17031009.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具