정수를 짝수면 2로 나누고 홀수면 3으로 곱한후 1로 더해서 1이 될때까지 반복해서 나온 수열들의 사이클을 구하는 건데 디버깅하면 오류가 없다고 뜨는데 실행시켜보면 아무것도 출력이 안되고 뭐가 잘못된건지 모르겠습니다ㅠㅠ
이제 막 c언어를 배우고 있는데 정말 힘드네요 부디 도와주세요..
#include<stdio.h>
int main (void) {
int i,j,n,k;
int length, maxlength = 1;
scanf(“1 10”, &i, &j);
for(k=i;k<=j;k++)
{
n=k;
while(n!=1){
if(n%2 == 1){
n=3*n+1;
}
if(n%2 ==0){
n=n/2;
}
length++;
}
if(maxlength<length) {
maxlength = length;
}
length=1;
}
printf("%d", maxlength);
return 0;
}
scanf 가 왜저러냐
입력값이랑 출력값이 정해진값대로 나와야해서 그랴..입력값은 1 10, 출력값은 20 딱 이렇게 나와야해서
else 라는 게 있어
else. else if 다 써봤는데 똑같아서 그냥 저렇게 했어요..
어디에 써봤는데?
while문 안에서요
흠 이상하네 2번째 if 를 else 로 바꾸면 될 거 같은데
흠 일단 그렇게 해보겠습니다
if(n%2==1) 이게 실행되고 나서 n%2==0 여기 두번 걸리잖아 else 안써서
한번 고쳐볼게용
void Recursion(int num){ if (num == 1) { printf("%d\n", num); return; }if (num % 2 == 0) { printf("%d\n", num); Recursion(num / 2); } else { printf("%d\n", num); Recursion(num * 3 + 1); }}
반복되는거 패턴이 질문에 다있네요 ;;;
위에 나온 것들로만 설명해주시면 안되나요? 제가 이제 막 배우는 단계라 Recursion은 안배워서요..어쨌거나 답변달아주셔서 감사합니다!
int main(void) { int n; scanf("%d", &n); while (n != 1) { if (n % 2 == 0) { printf("%d\n", n); n = n / 2; } else { printf("%d\n", n); n = n * 3 + 1; } } printf("%d\n", n); return 0;}