递归算法的经典实践:从斐波那契到汉诺塔
在编程世界中,递归是一种优雅且强大的算法思想,它通过函数自身调用来解决问题。本文将解析三个基于 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。