scala教程:函数的递归

介绍

一个函数 内部 调用自己

函数内部可以调用其他函数,当然在函数内部也可以调用自己

代码特点

  1. 函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同

  2. 当 参数满足一个条件 时,函数不再执行

    这个非常重要,通常被称为递归的出口,否则 会出现死循环!

应用场景

在处理 不确定的循环条件时,格外的有用,例如:遍历整个文件目录的结构

例子

定义一个函数,使用递归(不用循环语句)实现功能如下:
调用函数,传入数字(比如:5),打印:

5
4
3
2
1

代码

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

  def printNum(a:Int):Unit={
    println(a)
    if(a==1){
      return
    }

    printNum(a-1)
  }

  printNum(3)
}

图解:

案例

计算数字累加

需求

  1. 定义一个函数 sum
  2. 能够接收一个 num 的整数参数
  3. 计算 1 + 2 + … num 的结果
def main(args: Array[String]): Unit = {

  def sum(i:Int):Int={
//    println(i)
    if(i==1){
      return 1
    }
    return i + sum(i-1)
  }

  val res = sum(3)
  println(res)
}

图解:


原文出处:/show_1IX1BoHuUiGW.html