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

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

开发者学堂课程【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)

相关文章
|
Oracle Java 关系型数据库
Random和ThreadLocalRandom区别
Random和ThreadLocalRandom区别
246 3
|
并行计算 TensorFlow 算法框架/工具
TensorFlow识别GPU难道就这么难吗?还是我的GPU有问题?
TensorFlow识别GPU难道就这么难吗?还是我的GPU有问题?
|
前端开发 Java Spring
异步事务?关于异步@Async + 事务@Transactional的结合使用问题分析【享学Spring MVC】(下)
异步事务?关于异步@Async + 事务@Transactional的结合使用问题分析【享学Spring MVC】(下)
|
4月前
|
Ubuntu Linux
Ubuntu 25.04 内核确定,Linux 6.14 带来全新体验
Linux 6.14 将带来诸多新特性,包括新的 AMDXDNA 加速器驱动程序,可能完成的 NTSYNC 驱动程序,以及更多图形驱动程序改进等。
|
机器学习/深度学习 自然语言处理 测试技术
CoT神话破灭,并非LLM标配!三大学府机构联手证实,CoT仅在数学符号推理有用
【10月更文挑战第17天】链式思维(CoT)曾被认为是大型语言模型(LLM)激发推理能力的关键方法,但最新研究显示,CoT仅在数学和符号推理任务中有效,其他任务中效果不明显。加州大学伯克利分校、斯坦福大学和卡内基梅隆大学的联合研究打破了CoT作为LLM标配的神话,为重新评估LLM的推理能力提供了新视角。
324 1
|
机器学习/深度学习 PyTorch TensorFlow
使用Python实现智能食品质量检测的深度学习模型
使用Python实现智能食品质量检测的深度学习模型
578 1
|
存储 关系型数据库 MySQL
查发票|发票查验|验证码识别|批量查验|发票验真
昨天我开始对发票查验最耗时的环节-验证码识别下手,通过使用5000多张打码图片对PaddleOCR的模型进行训练后,识别率获得了很大提升。
590 1
|
机器学习/深度学习 数据库 数据安全/隐私保护
RBAC模型介绍
RBAC模型是一种基于角色的访问控制机制,用于解决企业系统中不同用户对不同业务的权限管理问题。它将功能集合为角色,然后将角色分配给用户,简化了大量用户的权限分配过程,降低了操作错误和复杂性。通过角色,可以实现用户与功能的解耦,便于权限管理。在RBAC中,用户、角色和权限之间存在多对多的关系,通常涉及五张数据库表来维护这种关系。
529 10
@Pointcut 使用
@Pointcut 使用
266 1