Berkeley's SICP in python3(六)

上面两章介绍了程序两种基本元素的联系:数据和函数。
函数可以利用高阶函数,从而把函数看成数据进行操作;而数据也可以利用消息传递使其具有行为和称为一个对象。
也知道了编写大型程序的技巧,向函数式编程,数据抽象,类的继承,泛型函数等等。这些核心概念构成一个强大的基础,可构建模块化的,可维护的, 可扩展的程序。
本章将关注程序自身。python程序不过是一些文本,怎么知道程序表达的意思。因此应该学习程序是如何构造与执行的。而我们应该遂程序改变自己的想象,我们应该知道自己设计的语言,而不是有别人设计来使用的语言。

计算机程序的构造与解释

1.程序语言:

2.函数极其生成过程

函数一个随计算过程而进行本地变化的一种模式。它指出过程的一个阶段是根据前一个阶段构建而来的。

2.1递归函数

一个函数用过直接或者间接调用自己,那么就称之为递归函数。

2.2递归函数解剖

2.3树递归

函数调用自己多次,我们称之为树递归,就像计算Fibonacci 数列那样。
记录:递归函数的重复计算较多,一个技巧就是记住当前状态计算出的值进行保存,而不必下次再调用时重复计算。

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

def memo(f):
    """
    Return a memozied version of single_arguement function f
    """
    cache = {}
    def  memozied(n):
        if n not in cache:
            cache[n] = f(n)
            return cache[n]
    return memozied

通过记住已经计算出的状态值,后面再次用到的时候就不必再次计算,提高计算效率。

3递归数据结构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值