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数据类型和生成器表达式。
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练