#include <stdio.h>
int collatz(long long n);
int main(void)
{
int max_num = 0, max_len = 0;
int first_num, last_num;
int i;
int len; // len을 내부 변수로 선언
printf("두 수 : ");
scanf("%d %d", &first_num, &last_num);
for (i = first_num; i <= last_num; i++) {
len = collatz(i);
if (len > max_len) { // 현재 수자의 길이가 더 길면
max_num = i; // 현재 수자 저장
max_len = len; // 현재 수자의 길이 저장
}
}
printf("가장 긴 수 : %d, 길이 : %d\n", max_num, max_len);
return 0;
}
int collatz(long long n) // n의 값이 long의 범위를 벗어나므로 long long으로 선언
{
if (n == 1) return 1; // n이 1이면 재귀 호출 종료
if (n % 2 == 0) n /= 2; // 짝수일 때
else n = 3 * n + 1; // 홀수일 때
return (collatz(n) + 1); // n이 1 이상인 동안 재귀 호출
}