【速通Python】Day 8【变量的作用域 局部变量 全局变量 global声明 递归函数 递归调用 递归终止条件 栈内存 阶乘 斐波那契数列】

CSDN话题挑战赛第2期
参赛话题:学习笔记

变量的作用域

  • 变量的作用域
    • 程序代码能访问该变量的区域
    • 根据变量的有效范围可分为
      • 局部变量
        • 在函数内定义并使用的变量只在函数内部有效,局部变量使用 global 声明,这个变量就会成为全局变量
      • 全局变量
        • 函数体外定义的变量,可作用于函数内外
def fun(a, b):
    c = a + b  # c就是局部变量,是在函数体内进行定义的变量, a,b为函数的形参,作用范围也是函数内部,相当于局部变量
    print(c)


# print(a)  # NameError: name 'a' is not defined
# print(c)  # NameError: name 'c' is not defined

name = 'zane'  # name的作用范围为函数内部和外部都可以使用  --> 称为全局变量


def fun2():
    print(name)


fun2()  # zane


def fun3():
    global age  # 函数内部定义的变量,局部变量,局部变量使用了global声明,这个变量实际上就变成了全局变量
    age = 20
    print(age)


fun3()
print(age)

递归函数

在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数

  • 组成
    • 递归调用递归终止条件(否则没完没了没意义)
    • 因此语法结构核心是if … else…
  • 调用过程
    • 每递归调用一次函数,都会在栈内存中分配一个栈帧
    • 每执行完一次函数,都会释放相应的空间
  • 优缺点
    • 思路和代码简单
    • 占用内存多(每掉一次都会开相应的内存空间),效率低下

使用递归来计算阶乘(找到出口)

def fac(n):
    if n == 1:
        return 1
    else:
        # return n*fac(n-1)
        res = n * fac(n - 1)
        return res


print(fac(6))  # 720

斐波那契数列 1 1 2 3 5 …

def fib(n):
    if n == 1:
        return 1
    elif n == 2:
        return 1
    else:
        return fib(n - 1) + fib(n - 2)


# 斐波拉契数列第6位上的数字
print(fib(6))

print('----------------')
# 输出前6位数字,重复的过程,我们使用列表,range(1, 7)产生一个 1 到 6 的整数序列即可
for i in range(1, 7):
    print(fib(i))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zanebla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值