章节目标
1.
了解递归的相关概述
2.
掌握阶乘案例
3.
掌握斐波那契数列案例
4.
掌握打印目录文件案例
1. 递归
递归指的就是
方法自己调用自己的情况
.
在涉及到复杂操作时
,
我们会经常用到它
.
在使用递归时
,
要注意以下三点
:
1.
递归必须有出口
,
否则容易造成
死递归
.
2.
递归必须要有规律
.
3.
构造方法不能递归
.
4.
递归方法必有
返回值的数据类型
.
例如
:
下述的代码就是递归的写法
def show() = {
show()
}
2. 案例一: 求阶乘
2.1 概述
所谓的阶乘其实指的是
数字
1
到该数字的累乘结果
,
例如
5
的阶乘就相当于
5 * 4 * 3 * 2 * 1
, 4
的阶乘就相当于
4 * 3 * 2 * 1
,
根据上述的描述
,
我们可以得出两个结论
:
1.
阶乘公式为
(
例如
:
求数字
n
的阶乘
): n! = n * (n - 1)!
2. 1
的阶乘等于
1,
即
: 1! = 1
2.2 需求
计算
5
的阶乘
.
2.3 参考代码
2.4 内存图解
概述
阶乘图解
3. 案例二: 斐波那契数列
3.1 概述
传说在罗马时期有个意大利青年叫
斐波那契
,
有一天他提出了一个非常有意思的问题
,
假设
:
1.
一对小兔子一个月之后会成长为一对大兔子
.
2.
每一对大兔子每个月都会生一对小兔子
.
3.
假设所有兔子都不死亡的情况下
,
问
: 1
对小兔子
, 1
年之后会变为多少对兔子
?
3.2 思路分析
即
:
已知数列
1, 1, 2, 3, 5, 8, 13...,
问
:
第
12
个数字是多少
?
3.3 参考代码
4. 案例三: 打印目录文件
4.1 需求
1.
定义
printFile(dir:File)
方法
,
该方法接收一个文件目录
,
用来打印该目录下所有的文件路径
.
2.
在
main
方法中测试
printFile()
方法
.
4.2 目的
考察
递归
, Java
的
File
类
相关内容
.
注意
:
因为
Scala
是依赖
JVM
的
,
所以
Java
中的类库
, Scala
也可以无缝调用
4.3 参考代码