Julia编程:从基础到实践
1. 递归函数计算
在Julia中,递归函数的计算需要注意函数定义,特别是在使用列表推导式或 |>
操作符时。以斐波那契数列为例,有两种不同的定义方式:
# 代码示例
while n > 0
(a, b) = (b, a+b)
n -= 1
end
return a
end
julia> @time(fib2(big(101)))
0.011516 seconds (31.83 k allocations: 760.443 KiB)
573147844013817084101
当使用列表推导式计算斐波那契数列时,不同的定义会有不同的结果:
julia> [fib1(k) for k in 1:2:9 if k%2 != 0]
ERROR: BoundsError:attempt to access 1-element Vector{Int64} at index
[2]
julia> [fib2(k) for k in 1:2:9 if k%2 != 0]
5-element Vector{BigInt}:
1
2
5
13
34
第一个版本使用数组,在计算第一项 fib1(1)
时会引发边界错误,而第二个版本则能成功执行。
2. 隐式和显式类型
在定义阶乘函数和斐波那契数列时,输入参数的类型