三、斐波那契数列:递归与列表操作的结合
fbnq.scala 展示了斐波那契数列前 20 项的生成逻辑。斐波那契数列的定义是 f(1)=f(2)=1, f(n)=f(n-1)+f(n-2),代码通过递归实现:
- 递归终止条件:
n==1时返回List(1),n==2时返回List(1, 1); - 递归推导:对
f(n-1)的结果追加 “最后两项之和”,生成f(n)的列表。
通过 fibonacci(20) 调用,最终输出前 20 项数列(如 1, 1, 2, 3, 5, ..., 6765),清晰展现了递归思想在数列生成中的应用。
四、交互输入:循环控制与用户反馈
zdrn.scala 实现了 “循环输入直到闰年” 的交互功能。核心逻辑是:
- 封装
isLeapYear函数复用闰年判断逻辑; - 通过
do-while循环持续接收用户输入,若输入非闰年则提示 “重新输入”,直到输入闰年才终止循环。
代码中 StdIn.readInt() 实现控制台输入,结合条件判断和提示信息,打造了友好的交互体验,体现了 Scala 对命令行交互的支持。
五、成绩处理:集合映射与数据清洗
cjcl.scala 聚焦成绩修正场景(将 56-59 分统一设为 60 分)。实现方式是:
- 利用
map操作遍历成绩序列; - 通过条件判断
if (score >= 56 && score <= 59) 60 else score完成分数修正。
代码中对原始成绩 Seq(100, 51, 55, 67, 59, 89) 处理后,输出修正结果(如 59 分被改为 60 分),展示了 Scala 集合操作在数据清洗场景的高效性。
总结:阶段 1 练习的技术脉络
这五组练习覆盖了 Scala 编程的核心基础:
- 逻辑判断:如闰年的多条件分支;
- 集合操作:如
map、sum、foreach对数列、成绩的处理; - 递归思想:如斐波那契数列的递归生成;
- 交互与控制流:如循环输入的
do-while逻辑。