递归函数(补充案例)

85 阅读1分钟

案例一:斐波那契数列

斐波那契数列的定义是:

起始条件:f(0) = 0 , f(1) = 1

递归规则:f(n) = f(n-1) + f(n-2)(当 n ≥ 2)。求它的第n项。

def f(n: Int): Int = {  
  if (n == 0) {  
    0 // 起始条件  
  } else if (n == 1) {  
    1 // 起始条件  
  } else {  
    f(n - 1) + f(n - 2) // 递归规则  
  }  
}

案例二:打印数字的各个位数

起始条件:f(n) = 输出个位 ,  n<9

递归规则:f(n) = f(n/10)+ 输出个位(当 n ≥ 10)

def println(n: Int) = {  
  if(n < 9){  
    print(n%10)  
  } else {  
    println(n/10)  
    print(n%10)  
  }  
}

案例三:求最大公约数

最大公约数(Greatest Common Divisor, GCD)是指能同时整除两个或多个整数的最大正整数。

屏幕截图 2025-10-21 090509.png

起始条件:一个递归的终止条件,确保递归不会无限进行。它处理最简单的情况并返回结果.

递归规则:在这个部分,函数会调用自身,以解决一个更小的子问题。

def gcd(a: Int, b: Int): Int = {  
   if (b == 0)  
      a  
    else  
   gcd(b, a % b)  
  }
  def main(args: Array[String]): Unit = {
    val num1 = 56
    val num2 = 98
    println(s"The GCD of $num1 and $num2 is ${gcd(num1, num2)}")