Python笔记整理第五十八篇(变量的作用域、递归函数(阶乘、斐波那契数列))

变量的作用域:①根据代码访问该变量的区域;
②根据变量的有效范围可分为:局部变量和全局变量

局部变量:在函数内定义并使用的变量,只有在函数内部有效,局部变量使用global声明,这个变量就变成全局变量;
全局变量:函数体外定义的变量,可作用于函数内外。

代码如下:

def fun(a,b):
    c = a+b    #c就是为局部变量,因为c是在函数体内进行定义的变量,a,b为函数的形参,作用范围也是函数内部,相当于局部变量
    print(c)



#print(c)   因为c超出了起作用的范围

name = '张三'     #name的作用范围为函数内部和外部都可以使用--->称为全局变量
print(name)
def fun2():
    print(name)

#调用函数
fun2()

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

fun3()
print(age)

运行结果:

张三
张三
20
20

Process finished with exit code 0

什么是递归函数?
如果在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数。

递归函数组成部分:
递归调用与递归终止条件

递归的调用过程:
①每递归调用一次函数,都会在栈内存分配一个栈帧;
②每执行完一次函数,都会释放相应的空间。

递归的优缺:
缺点:占用内存多,效率低下
优点:思路和代码简单

练习:计算阶乘
代码如下:

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


n = int(input('请输入n的数值:'))
a = fac(n)
print('%d的阶乘为%d'%(n,a))
#print('这个数阶乘为:',fac(n))

运行结果:

请输入n的数值:10
10的阶乘为3628800

Process finished with exit code 0

练习:斐波那契数列
代码如下:

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

n = int(input('请输入你要求的数:'))
print('第%d位的斐波那契数列为%d'%(n,fib(n)))

#输出这个数列前n-1项的数字
for i in range(1,n):
    print(fib(i),end='\t')

运行结果:

请输入你要求的数:6
第6位的斐波那契数列为8
1	1	2	3	5	
Process finished with exit code 0


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值