1 Python中的递归
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rplz8uGO-1721953155211)(https://i-blog.csdnimg.cn/direct/a58d3eeeea914b6b99a6a6ea67cfeae7.png#pic_center)]
基线条件是一个不再进行递归的条件,即它告诉函数何时停止递归。 递归步骤是函数调用自身的部分,它必须朝着基线条件的方向进
递归的基本结构
基线条件:这是递归的结束条件,如果不满足这个条件,递归将继续进行。
递归步骤:函数在调用自身时,必须改变其状态以向基线条件靠拢。
示例:计算阶乘
阶乘是一个常见的递归示例。阶乘定义为n! = n * (n-1) * (n-2) * … * 1,特别地,0! = 1。
def factorial(n):
if n == 0:
return 1
else:
return n + factorial(n - 1) # 这里错误地使用了加法
print(factorial(10))
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OEkvWX8u-1721953155215)(https://i-blog.csdnimg.cn/direct/9e442b406b7e4f6f919482a9c4ed7fab.gif#pic_center)]
2 函数的空间命名
全局命名空间:包含了在所有模块级别(非函数内部)定义的变量和函数。(村里的事它都管,村长)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sY5Q6tS7-1721953155217)(https://i-blog.csdnimg.cn/direct/41bae8fe6f124e329f0d2848bc0739c9.jpeg)]
局部命名空间:在函数内部定义的变量和函数会存在于该函数的局部命名空间中。(你家里你爹最帅,出了门啥也不是)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i2ZJQJRj-1721953155218)(https://i-blog.csdnimg.cn/direct/549786445488426a93996eda0a55a4c9.jpeg)]
内置命名空间:Python解释器自带的命名空间,包含了所有内置函数和异常等。(系统内定钦差管所有的事)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2hhCelOh-1721953155219)(https://i-blog.csdnimg.cn/direct/b8742c48365d4ea6b07111608f43531e.jpeg)]
3 作用域两种
def my_function():
x = 10 # x 是局部变量
print(x)
y = 20 # y 是全局变量
my_function()
print(y)
全局作用域(整个村)
作用在全局 —— 内置和全局名字空间中的名字都属于全局作用域 ——globals()
局部作用域 (你家)
作用在局部 —— 函数(局部名字空间中的名字属于局部作用域) ——locals()