scala汉诺塔

24 阅读1分钟

递归算法的经典实践:从斐波那契到汉诺塔

在编程世界中,递归是一种优雅且强大的算法思想,它通过函数自身调用来解决问题。本文将解析三个基于 Scala 语言的递归经典案例 —— 斐波那契数列、带边界处理的递归函数和汉诺塔问题,带您理解递归的魅力与应用。

斐波那契数列的递归实现(sda.scala)

斐波那契数列是递归算法的入门经典,其定义为:f(1)=1,f(2)=2,当n>2时,f(n)=f(n-1)+f(n-2)

scala

object sda {
  def f(n:Int):Int = {
    if(n == 1){
      1
    } else if(n==2){
      2
    } else{
      f(n - 1) + f(n - 2)
    }
  }

  def main(args: Array[String]): Unit = {
    val rst = f(5)
    println(rst)
  }
}
  • 逻辑解析:方法f通过判断n的值来决定返回结果。当n为 1 或 2 时直接返回固定值,当n大于 2 时,递归调用自身计算f(n-1)f(n-2)的和。

  • 运行结果:调用f(5)时,计算过程为f(5)=f(4)+f(3)f(4)=f(3)+f(2)f(3)=f(2)+f(1),最终结果为8