if ... else 表达式
朱莉娅最常见的条件是 if
… else
表达式。例如,下面我们实现欧几里德算法来计算最大公约数 ,使用条件来处理基本情况:
mygcd(a, b) = if a == 0
abs(b)
else
mygcd(b % a, a)
end
朱莉娅中的 if
… else
形式实际上是一个表达式,并且具有一个值; 该值是所采用分支上的尾部位置(即最后一个表达式)中的表达式。请考虑以下示例输入:
julia> mygcd(0, -10)
10
在这里,a
是 0
而 b
是 -10
。条件 a == 0
是 true
,所以第一个分支被采用。返回的值是 abs(b)
,即 10
。
julia> mygcd(2, 3)
1
在这里,a
是 2
,b
是 3
。条件 a == 0
是假的,所以第二个分支被采用,我们计算 mygcd(b % a, a)
,即 mygcd(3 % 2, 2)
。当 3
除以 2
时,%
运算符返回余数,在这种情况下 1
。因此我们计算 mygcd(1, 2)
,这次 a
是 1
而 b
是 2
。再次,a == 0
是假的,所以第二个分支被采用,我们计算 mygcd(b % a, a)
,这是 mygcd(0, 1)
。这次,a == 0
终于返回了 abs(b)
,结果是 1
。