Cの初心者です。
再帰を使用して、ユーザーが入力した自然数(入力される自然数の数は分からない)をscanfで読み取り、その中から最大値を返す関数int max()を書くという課題です。ユーザーが入力する最後の自然数は0でなくてはならず、0が入力されたら関数は必ず終了し、その時点での最大値を返す。

配列やリスト、ループを使わずに再帰だけで書かなければならず、以下のコードではどうも毎回入力した一つ目の数字だけを返すのですが、何時間格闘しても原因がわかりません。

しょうもない質問かもしれませんが、ご指摘、ご教授いただけると幸いです。

#include <stdio.h>
#include <stdlib.h>

int max() {
    int i;
    int result = 0;
    scanf("%d", &i);
    if (i > result) {
        result = i;
        return result;
    }
    if (i < result)
        return result;
    if (i == 0)
        exit(0);

    return max();
}

int main() {
    printf("Enter your numbers (the last one should be zero):\n");
    printf("The maximum value is %d.\n", max());
    return 0;
}