使用递归的思想去思考和编程 | 学习笔记

简介: 快速学习使用递归的思想去思考和编程

开发者学堂课程【Scala 核心编程 - 进阶使用递归的思想去思考和编程学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9097


使用递归的思想去思考和编程


内容介绍:

一、基本介绍

二、cala 提倡函数式编程(递归思想)

三、应用实例


一、基本介绍

Scala 是运行在 Java 虚拟机(Java Virtual Machine)之上,因此具有如下特点:

1.轻松实现和丰富的Java 类库互联互通。

2.它既支持面向对象的编程方式(oo),又支持函数式编程。

3.它写出的程序像动态语言一样简洁,但事实上它确是严格意义上的静态语言。

4. Scala就像一位武林中的集大成者,将过去几十年计算机语言发展历史中的精萃集于一身,化繁为简,为程序员们提供了一种新的选择。设计者马丁·奥得斯基希望程序员们将编程作为简洁,高效,令人愉快的工作。同时也让程序员们进行关于编程思想的新的思考。


二、scala 提倡函数式编程(递归思想)

先说下编程范式:

1.在所有的编程范式中,面向对象编程(Object-Oriented Programming〉无疑是最大的赢家。

2.但其实面向对象编程并不是一种严格意义上的编程范式,严格意义上的编程范式分为:命令式编程(Imperative Programming)、函数式编程(Functional Programming)和逻辑式编程(Logic Programming)。面向对象编程只是上述几种范式的一个交叉产物,更多的还是继承了命令式编程的基因。

3.在传统的语言设计中,只有命令式编程得到了强调,那就是程序员要告诉计算机应该怎么做。而递归则通过灵巧的函数定义,告诉计算机做什么。

因此在使用命令式编程思维的程序中,是现在多数程序采用的编程方式,递归出镜的几率很少,而在函数式编程中,大家可以随处见到递归的方式。


三、应用实例

scala 中循环不建议使用 while 和 do...while,而建议使用递归。

应用实例要求:

计算1-50的和

常规的解决方式

val now: Date = new Date()

val dateFormat: SimpleDateFormat =

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

val date = dateFormat. format(now)

println("date=" + date)//输出时间

var res = Biglnt(O)

var num = Biglnt(1)

var maxVal = Biglnt(99999999I)//BigInt(99999999I)[测试效率大数]

while (num= maxVal){

res += num

num += 1

}

println("res=" + res)

相关文章
|
6月前
|
算法 JavaScript 前端开发
递归的递归之书:第五章到第九章
递归的递归之书:第五章到第九章
155 0
|
5月前
|
机器学习/深度学习 C语言
|
5月前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
110 7
|
6月前
|
存储 算法 JavaScript
递归的递归之书:引言到第四章
递归的递归之书:引言到第四章
188 0
|
6月前
|
存储 算法 C语言
C递归程序设计
C递归程序设计
38 3
|
6月前
|
存储 缓存 算法
程序设计中的递归思想与实践
程序设计中的递归思想与实践
44 0
|
NoSQL Java jenkins
【学习总结】思想提升
【学习总结】思想提升
第七章递归知识讲解。(一)
第七章递归知识讲解。(一)
85 0
第七章递归知识讲解。(二)
第七章递归知识讲解。(二)
94 0