Julia递归函数

例子

简单递归

使用递归和三元条件运算符,我们可以创建内置factorial函数的替代实现:

myfactorial(n) = n == 0 ? 1 : n * myfactorial(n - 1)

用法:

julia> myfactorial(10)

3628800

处理树木

递归函数通常对数据结构最有用,尤其是树数据结构。由于Julia 中的表达式是树结构,递归对于元编程非常有用。例如,下面的函数收集表达式中使用的所有头部的集合。

heads(ex::Expr) = reduce(∪, Set((ex.head,)), (heads(a) for a in ex.args))

heads(::Any) = Set{Symbol}()

我们可以检查我们的函数是否按预期工作:

julia> heads(:(7 + 4x > 1 > A[0]))

Set(Symbol[:comparison,:ref,:call])

此函数很紧凑,并使用了多种更高级的技术,例如reduce 高阶函数、Set数据类型和生成器表达式。

以上是 Julia递归函数 的全部内容, 来源链接: utcz.com/z/343780.html

回到顶部