MoonBit月兔编程语言 现代编程思想 第三课 函数, 列表与递归现代编程思想 # 函数, 列表与递归 Hongbo Zhang 基本数据类型:函数 ## 函数 - 在数学上,描述对应关系的一种特殊集合。对于特定的输入,总是有特定的输出 - 在计算机中,对相同运算的抽象,避免大量重复定义 ○ 计算半径为1的圆的面积: $ 3.1415 \times 1 \times 1 $ ○ 计算半径为2的圆的面积: $ 3.1415 \times 2 \times Some(value) => value 4. // 若option_int为None则会程序出错中止 5. } 6. } 算法:递归 ## 递归的例子 • GNU is Not Unix • Wine Is Not an Emulator - 斐波那契数列的计算(第一项为1,第二项为1,之后第n项为前两项之和) • 山里有个庙 “山里有个庙,庙里有个老和尚和小和尚,一天,老和尚给小和尚讲故事: ☑ '山里有个庙,庙里有个老和尚和小和尚,一天,老和尚给小和尚讲故事...' ## 递归 - 递归是将问题分解为与原问题相似的、规模更小的问题来求解。递归应当有边界条件 ◦ 在函数的定义中,直接或间接地使用函数自身 1. fn fib(n: Int) -> Int { 2. if n == 1 ||0 码力 | 42 页 | 587.59 KB | 2 年前3
Candid: the interface description language of the Internet Computer smart contracts - 陈研0 码力 | 35 页 | 1.35 MB | 2 年前3
Agda User Manual v2.5.4.20 码力 | 216 页 | 207.61 KB | 2 年前3
The Zig Programming Language 0.9.1 Documentation0 码力 | 234 页 | 7.90 MB | 2 年前3
Hello 算法 1.2.0 繁体中文 Dart 版| |space complexity|空間复杂度|空間複雜度| |loop|循环|迴圈| |iteration|迭代|迭代| |recursion|递归|遞迴| |tail recursion|尾递归|尾遞迴| |recursion tree|递归树|遞迴樹| |big-O notation|大O 記号|大O 記號| |asymptotic upper bound|漸近上界|漸近上界| |sign-magnitude|原码|原碼|0 码力 | 378 页 | 18.77 MB | 1 年前3
The Zig Programming Language 0.5.0 Documentation0 码力 | 224 页 | 5.80 MB | 2 年前3
Hello 算法 1.1.0 C#版如何使用本书 0.3 小结 第1章 初识算法 1.1 算法无处不在 1.2 算法是什么 1.3 小结 第2章 复杂度分析 2.1 算法效率评估 2.2 迭代与递归 2.3 时间复杂度 2.4 空间复杂度 2.5 小结 第3章 数据结构 3.1 数据结构分类 3.2 基本数据类型 3.3 数字编码* 3.4 字符编码* 综上所述,建议你在深入学习数据结构与算法之前,先对复杂度分析建立初步的了解,以便能够完成简单算法的复杂度分析。 ### 2.2 迭代与递归 在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 #### 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中, 四次方关系”,以此类推。 #### 2.2.2 递归 递归(recursion)是一种算法策略,通过函数调用自身来解决问题。它主要包含两个阶段。 1. 递:程序不断深入地调用自身,通常传入更小或更简化的参数,直到达到“终止条件”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。0 码力 | 378 页 | 18.47 MB | 2 年前3
Hello 算法 1.2.0 简体中文 C++ 版如何使用本书 0.3 小结 第1章 初识算法 1.1 算法无处不在 1.2 算法是什么 1.3 小结 第2章 复杂度分析 2.1 算法效率评估 2.2 迭代与递归 2.3 时间复杂度 2.4 空间复杂度 2.5 小结 第3章 数据结构 3.1 数据结构分类 3.2 基本数据类型 3.3 数字编码* 3.4 字符编码* 综上所述,建议你在深入学习数据结构与算法之前,先对复杂度分析建立初步的了解,以便能够完成简单算法的复杂度分析。 ### 2.2 迭代与递归 在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 #### 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中, 四次方关系”,以此类推。 #### 2.2.2 递归 递归(recursion)是一种算法策略,通过函数调用自身来解决问题。它主要包含两个阶段。 1. 递:程序不断深入地调用自身,通常传入更小或更简化的参数,直到达到“终止条件”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。0 码力 | 379 页 | 18.48 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Java 版如何使用本书 0.3 小结 第1章 初识算法 1.1 算法无处不在 1.2 算法是什么 1.3 小结 第2章 复杂度分析 2.1 算法效率评估 2.2 迭代与递归 2.3 时间复杂度 2.4 空间复杂度 2.5 小结 第3章 数据结构 3.1 数据结构分类 3.2 基本数据类型 3.3 数字编码* 3.4 字符编码* 综上所述,建议你在深入学习数据结构与算法之前,先对复杂度分析建立初步的了解,以便能够完成简单算法的复杂度分析。 ### 2.2 迭代与递归 在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 #### 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中, 四次方关系”,以此类推。 #### 2.2.2 递归 递归(recursion)是一种算法策略,通过函数调用自身来解决问题。它主要包含两个阶段。 1. 递:程序不断深入地调用自身,通常传入更小或更简化的参数,直到达到“终止条件”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。0 码力 | 379 页 | 18.48 MB | 1 年前3
Hello 算法 1.1.0 Java版如何使用本书 0.3 小结 第1章 初识算法 1.1 算法无处不在 1.2 算法是什么 1.3 小结 第2章 复杂度分析 2.1 算法效率评估 2.2 迭代与递归 2.3 时间复杂度 2.4 空间复杂度 2.5 小结 第3章 数据结构 3.1 数据结构分类 3.2 基本数据类型 3.3 数字编码* 3.4 字符编码* 综上所述,建议你在深入学习数据结构与算法之前,先对复杂度分析建立初步的了解,以便能够完成简单算法的复杂度分析。 ### 2.2 迭代与递归 在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 #### 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中, 四次方关系”,以此类推。 #### 2.2.2 递归 递归(recursion)是一种算法策略,通过函数调用自身来解决问题。它主要包含两个阶段。 1. 递:程序不断深入地调用自身,通常传入更小或更简化的参数,直到达到“终止条件”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。0 码力 | 378 页 | 18.47 MB | 2 年前3
共 305 条
- 1
- 2
- 3
- 4
- 5
- 6
- 31













