递归函数

19 阅读1分钟

递归函数:自己调用自己的函数

定义函数

object Base45 {
  def f():Unit = {
    println("f.....被调用了")

    f()
  }

  def main(args: Array[String]): Unit = {
    f()

    println("over")

  }
}
  • 可以被分解为类似子问题
  • 当分解到足够小的时候 问题可以直接求解
object Base46 {
  def f(n:Int):Int = {
    if(n == 1)
      1
    else
      f(n-1) + n

  }

  def main(args: Array[String]): Unit = {
    val rst = f(100)


    println(rst)

  }
}

可以上一个台阶也可以上两个台阶 现在有十个台阶有几种上法

object Base48 {
  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(10)


    println(rst)

  }
}

把输入的整数的各个位置上的数值输出来

object Base49 {
  def f(n: Int): Unit = {
    if (n < 10) {
      println(n)
    } else {
      f(n / 10)
      println(n % 10)
    }
  }

  def main(args: Array[String]): Unit = {
    f(12345)
  }
}

把数字移到从A移到C 只能小压大

object Base50 {
  def f(n: Int, A: Char, B: Char, C: Char): Unit = {
    if (n == 1) {
      println(s"${A} ----> ${C}")
    } else {
      f(n - 1, A, C, B)
      println(s"${A} ----> ${C}")
      f(n - 1, B, A, C)
    }
  }

  def main(args: Array[String]): Unit = {
    f(4, 'A', 'B', 'C')
  }
}