学习递归函数

55 阅读1分钟

递归函数的定义

递归是一种常用的解决问题的方法,特别适用于解决可以被分解为类似子问题的问题。递归函数通常由两个主要部分组成:起始条件(或基线条件)和递归规则(或递归关系)。

起始条件:

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

基本结构:

def recursiveFunction(parameters): ReturnType = {  

  // 起始条件  

  if (base condition) {  

    return base case result  

  } else {  

    // 递归规则  

    return recursiveFunction(smaller parameters)  

  }  

}

递归规则

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

递归函数的应用场景

特点:

  1. 大问题可以拆解为同样的小问题

  2. 问题拆解到足够小的时候,可以直接求解

例子(1):

大任务:求1+2+3+...+99+100的和

记f(n) = 1+2+3+4+...+n

f(100) = 1+2+3+4+...+98+99+100

f(99) = 1+2+3+4+...+98+99

f(98) = 1+2+3+4+...+98

f(100) = f(99) + 100

f(99) = f(98) + 99

....

...

f(1) = 1 (足够小的时候,可以直接求解)

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

def main(args: Array[String]): Unit = {
  val rst = f(100)  //5050
  println(rst)
}
 
例子(2):

记f(n) = 1 * 2 * 3 * 4 * ... * n

f(1) = 1 (足够小的时候,可以直接求解)

f(n) = f(n-1) * n

def f(n:Int):Int = {
    if(n == 1){
      1
    }else{
      f(n-1) * n
    }
  }

def main(args: Array[String]): Unit = {
  val rst = f(4) // 4*3*2*1 = 24
  println(rst)
}