__author__ = 'li shilin'
# python 中的递归
'''
补充:python 中的编程模式都是面向对象或者面向过程编程 所谓的函数式编程并不是python的核心 函数式编程虽然是
历史悠久的编程模式 但是在python中 不属于函数式编程
'''
# 解义:在函数的内部,可以调用其它函数,如果一个函数在内部调用自己本身,这个函数就是递归函数
# 递归的特性
'''
1.必须有明确的结束条件 (递归的最大层次是999次 如果没有明确的结束条件容易形成死循环 导致内存膨胀)
2.每次进入更深一层递归时,问题规模相比上一次递归都应有所减少
3.递归效率不高,递归层次过多的话会导致栈溢出(在计算机中,函数调用都是通过栈(stack)这种数据结构实现的,每当进入一个函数调用
,栈就会增加一层贞,每当函数返回,栈就会减少一层贞,由于栈的大小是有限的,所以,递归调用次数过多,会导致栈溢出)
'''
# 简单的递归例子
def cala(n):
print(n)
# 如果n除以2大于0 那么就返回(当n除以2小于0以后就不再继续递归 这样就限制的递归的次数 不会出现死循环)
if int(n/2) > 0:
return cala(int(n/2))
print("--->",n)
cala(20)
# 高阶函数 变量可以指向函数。函数的参数能接收变量,呢么一个函数就可以接收另外一个函数作为参数,这种函数就称为
# 高阶函数
def add(a,b,f):
return f(a)+f(b)
# abs是将将参数转为正整数
res = add(3,-6,abs)
print(res)
# 将字符串转换为字典
# eval(字符串)
# 补充:with方法自动关闭打开的文件
# with open('log','r') as f:
# eg:
# 文件执行完毕之后会自动的关闭文件 不需要手动的去关闭 写法上 大同小异
with open("yesterday.txt","r",encoding="utf-8") as f:
for line in f:
print(line)
# 并且这种方法可以同时打开多个文件 (python官方标准格式一行代码不超过80个字符 所以可以使用 \ 来换行) eg:
with open("yesterday.txt","r",encoding="utf-8") as f ,\
open("yesterday2.txt", "r", encoding="utf-8") as f2:
pass
python 中的递归 简单笔记
最新推荐文章于 2022-09-07 16:32:33 发布