1
시작 번호가 주어지면 해당 collatz 체인의 길이를 찾으려고하는 코드를 작성하려고합니다.Collatz chain recursive function C
내가 재귀 적으로이 일을 기대했다 이것은 내가 지금까지 무엇을 가지고 :
#include stdio.h
int collatz(int number, int count)
{
if(number == 1)
{
return count;
}
if(number%2==0)
{
number = number/2;
collatz(number, count+1);
}
else
{
number = number*3+1;
collatz(number,count+1);
}
return 0;
}
int main(void)
{
int stored=0;
int temp;
for(int i = 1;i<10;i++)
{
temp = collatz(i,1);
if(temp>stored)
{
stored = temp;
}
}
printf("%i\n",stored);
}
문제는 함수가 결국 엔드 포인트에 도달 물론이지만, 그 체인의 길이로 반환됩니다 이것은 새로운 숫자가됩니다.
이 프로그램을 어떻게 구성하면 카운트가 엔드 포인트에 도달 할 때이 값을 첫 번째 호출의 출력으로 사용할 수 있습니까?
답장을 보내 주셔서 감사합니다. 그냥 똑같은 주제에 머무르면서 완벽하게 작동했지만 정수를 사용할 때 세분화 오류가 발생하는 이유는 다소 혼란 스럽지만 모든 정수를 'long long'으로 바꿀 때 잘 돌아갑니다. 왜 그런지 알아? 루프 변수를 최대 백만까지 반복 변경했습니다. – Amir
'number '가 715,827,882보다 큰 홀수로 변하면 어떻게됩니까? –
아하, 감사합니다. – Amir