python 中的递归 简单笔记

__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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值