auの日記

プログラミング初心者の日記。(auはハンドルネームです)

再起呼び出しを使用して最大公約数を計算するプログラム

auです。
今回も再起呼び出しを使って最大公約数を呼び出すプログラムを組みました。

#include <stdio.h>

int g_common_divisor(int x, int y) {
    int rem = 0;
    int res = 0;

    res = x / y;
    rem = x % y;

    if (rem == 0) {
        return y;
    }
    x = y;
    y = rem;
    return g_common_divisor(x, y);
}

int main(void) {
    int x = 0;
    int y = 0;
    int result = 0;

    printf("1つ目の数字");
    scanf("%d", &x);

    printf("2つ目の数字");
    scanf("%d", &y);

    result = g_common_divisor(x, y);

    printf("%d%dの最大公約数は%dです\n", x, y, result);
    return 0;
}

再起呼び出しをしない場合

#include <stdio.h>

int g_common_divisor(int x, int y) {
    int rem = 0;
    int res = 0;
    int r = 0;

    rem = x % y;

    for (; rem != 0; ) {
        x = y;
        y = rem;
        rem = x % y;
    }
    return y;
}

int main(void) {
    int x = 0;
    int y = 0;
    int result = 0;

    printf("1つ目の数字");
    scanf("%d", &x);

    printf("2つ目の数字");
    scanf("%d", &y);

    result = g_common_divisor(x, y);

    printf("%d%dの最大公約数は%dです\n", x, y, result);
    return 0;
}