Scala 阶段 1 过关练习2

22 阅读2分钟

三、斐波那契数列:递归与列表操作的结合

屏幕截图 2025-10-27 102131.png 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),清晰展现了递归思想在数列生成中的应用。

四、交互输入:循环控制与用户反馈

屏幕截图 2025-10-27 102136.png zdrn.scala 实现了 “循环输入直到闰年” 的交互功能。核心逻辑是:

  • 封装 isLeapYear 函数复用闰年判断逻辑;
  • 通过 do-while 循环持续接收用户输入,若输入非闰年则提示 “重新输入”,直到输入闰年才终止循环。

代码中 StdIn.readInt() 实现控制台输入,结合条件判断和提示信息,打造了友好的交互体验,体现了 Scala 对命令行交互的支持。

五、成绩处理:集合映射与数据清洗

屏幕截图 2025-10-27 102140.png 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 编程的核心基础:

  • 逻辑判断:如闰年的多条件分支;
  • 集合操作:如 mapsumforeach 对数列、成绩的处理;
  • 递归思想:如斐波那契数列的递归生成;
  • 交互与控制流:如循环输入的 do-while 逻辑。