👌

非再帰と再帰でユークリッドの互除法を実装する

2024/03/13に公開

やること

非再帰と再帰でユークリッドの互除法を実装します。

非再帰の場合

function gcd1(m, n)
    while m % n  0
        r = m % n
        m, n = n, r
    end

    return n
end

@show gcd1(30, 40)
@show gcd1(29, 13)
@show gcd1(73, 241)

結果になります。

yuu@penguin:~/src/daikon/20240313$ julia gcd1.jl 
gcd1(30, 40) = 10
gcd1(29, 13) = 1
gcd1(73, 241) = 1

再帰の場合

function gcd2(m, n)
    if m % n == 0
        return n
    end

    gcd2(n, m % n)
end

@show gcd2(30, 40)
@show gcd2(29, 13)
@show gcd2(73, 241)

結果になります。

yuu@penguin:~/src/daikon/20240313$ julia gcd2.jl 
gcd2(30, 40) = 10
gcd2(29, 13) = 1
gcd2(73, 241) = 1

Discussion