递归

递归 属于 Gleam

21 个练习

关于 递归

某个事物能够用自身来定义,这种能力称为递归。在 Gleam 中,递归最常见于递归函数,也就是调用自身的函数。

递归函数至少需要一个_基本情况_和至少一个_递归情况_。_基本情况_会返回一个值,不再调用该函数。_递归情况_会再次调用该函数,并修改输入,使其最终与基本情况匹配。

pub fn factorial(x: Int) -> Int {
  case x {
    // Base case
    1 -> 1

    // Recursive case
    _ -> x * factorial(x - 1)
  }
}

Gleam 没有专门用于循环的语法,所以所有循环都通过递归完成。

pub fn list_length(list: List(String)) -> Int {
  case list {
    [] -> 0
    [_, ..rest] -> 1 + list_length(rest)
  }
}

Gleam 还支持递归自定义类型。递归自定义类型的一个或多个变体会在各自包含的数据中引用自身。

pub type RussianDoll {
  Child               // Base case
  Mother(RussianDoll) // Recursive case
}
let very_big_doll = Mother(Mother(Mother(Child)))
let small_doll = Mother(Child)
通过 GitHub 编辑 该链接会在新窗口或标签页中打开

学习 递归

练习已锁定

再解锁 8 个练习即可练习 递归