#include <stdio.h>
int factorial(int a)
{
    return a == 0 ? 1 : 2*factorial(a - 1);
}

int main()
{
    int k, n;
    printf("상수 n 입력 : ");
    scanf("%d", &n);

    for (k = 0; factorial(k) <= n; k++)
    {
        factorial(k);
        printf("%d\n", factorial(k));
    }
    printf("공식을 만족하는 k의 최대값은? %d", k);
    return 0;
}


2^k <= n
이 공식을 만족하는 k를 찾는 알고리즘인데...

분명 for문 안에 있는 printf에서는 factorial(k)의 값이 제대로 나오는데

왜 밑에 printf에서는 k의 최대값이 k+1이 되서 나올까요?