auの日記

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

再起呼び出しを使って1 ~ nの総和を計算する

auです。
今回は再起呼び出しを使って1~nの総和を計算するプログラムを組みました。

#include <stdio.h>

int sum_total(int n) {
    if (n == 1) {
        return 1;
    }
    return n + sum_total(n - 1);
}

int main(void) {
    int n = 0;
    int result = 0;
    printf("数字を入力: ");
    scanf("%d", &n);

    result = sum_total(n);

    printf("1 ~ %dの総和: %d\n", n, result);
    return 0;
}

// 実行結果
数字を入力: 10
1 ~ 10の総和: 55

再起呼び出しをしないで実行するバージョンも作成しました。

#include <stdio.h>

int sum_total(int n) {
    int i = 0;
    for (; 0 < n; ) {
        i += n;
        n--;
    }
    return i;
}

int main(void) {
    int n = 0;
    int result = 0;
    printf("数字を入力: ");
    scanf("%d", &n);

    result = sum_total(n);

    printf("1 ~ %dの総和: %d\n", n, result);
    return 0;
}

// 実行結果
数字を入力: 10
1 ~ 10の総和: 55