开发者学堂课程【Scala 核心编程-基础:函数式编程基础介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8926
函数式编程基础介绍
目录
一、函数编程的内容
二、函数式编程基础
三、函数式编程高级
四、函数式编程的授课顺序
一、函数编程的内容
1.函数式编程基础
2.函数式编程高级
二、函数式编程基础
1.函数定义/声明
2.函数运行机制
3.递归
(1)递归介绍
推荐编程者使用递归来解决问题。当使用递归解决问题完了之后,它的底层仍然会进行优化。
(2)递归可以解决什么问题?
①递归是算法基础
②邮差问题
③最短路径问题
④背包问题
⑤迷宫问题:回溯
只要涉及到算法或者是实际应用的问题,递归都不必不可少。
(3)之前学过的大量应用到递归的例子
二差数、广义表、散列
(4)递归的作用
①递归的作用
从编程的原理来说,所有的东西都可以用递归来解决;在设计者眼里,现实中的递归就是不停地重复,重要的是重复的规律该如何找到。
②汉诺塔问题
有三根高度相同的柱子和一些大小及颜色不同的圆盘,三根柱子分别为起始柱 A、辅助柱 B 及目标柱 C。
如果是由 A 移动到 C。
对于一个人来说,如果是5个盘子是可以绕过来的。如果是64个盘子,人就几乎是完成不了了。
但是这两个例子的逻辑是一样的。
4.过程
5.惰性函数和异常的处理
异常的处理也是用到相关的函数或者是方法。
三、函数式编程高级
1.值函数(函数字面量)
2.高阶函数
3.闭包
4.应用函数
5.柯里化函数,抽象控制
四、函数式编程的授课顺序
1.在 scala 中,函数式编程和面向对象编程融合在一起,学习函数编程需要学习 oop 的知识,同样学习 oop 需要函数式编程的基础。
(1)为什么函数式编程和面向对象编程融合在一起
函数式编程原生是以 Java 为根基形成的。Java 是 oop 的东西。
只是设计者马丁奥德斯基觉得 oop 虽然很好,但是他还是想把函数融入到 oop 里面。
2.两者的关系关系
一旦在 oop 里面插入了函数,就会出现下图情况
情况就是面向对象里面拥有函数式编程的内容,函数式编程里面也会有面向对象编程的影子,这样就会造成当在讲函数编程的时候突然会用到 opp,反过来在讲面向对象的时候,就要用到函数的内容。
所以就可以把函数式编程和面向对象编程公用的东西讲解完,讲解完之后在讲解面向对象编程,如何再讲解函数式编程。
3.授课顺序
函数式编程->面向对象编程->函数式编程高级