:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
08/10/16 19:06
흠 방금 복사해서 돌려보니 144가 나오는군요.
님이 짜신 코드는 '1번'밖에 실행이 안되는 겁니다. 마지막 결과가 10 이하가 될때까지 돌리는 등 루프 설정이 필요해 보이네요. 아래는 야매로 해본 결괍니다; 함수는 건드리지 않고 main에 추가한 내용입니다. 참고로 하시면 될 것 같네요. int main(void) int a = 1122334; int b = a; //scanf("%d",&a); while(1){ b = aaa(b); if(b<10){ printf("%d\n",b); break; } return 0; }
08/10/16 19:48
추가 할것도 없고; 단 한줄만 수정하시면 됩니다..
함수 aaa()에서 return x; 를 return x>9 ? aaa(x) : x; 로 바꾸세요. PS. 그리고 aaa()함수에 논리적 헛점이 보이네요; for(i=0;a>=10;i++) 이게 아니구 for(i=0;a>0;i++) 이걸로 바꾸셔야 합니다; 그 이유는..인풋값을 1122334가 아닌 23을 넣어보시면 알겁니다; 그리고..변수 i도 빼세요. 아무런 필요가 없는 변수입니다.. 변수 i지금 당장은 4byte지만 나중에 게임 프로그래밍할때 함수 스택이 수만번 쌓이면 반드시 리소스 낭비의 주범이 됩니다.
08/10/17 05:38
나무이야기님이 PS에서 언급하신 내용을 C로 바꾸면,
for(i=0;a>0;i++) 를 for(;a>0;) 으로 바꾸란 이야긴데, 이것은 결국 while(a>0)과 같습니다. PS) 나무이야기님이 말씀하신 방식이 더 fancy합니다만, 일단은 레인님 방식을 쓰는 것이 낫겠습니다. 아무래도 지금 배우시는 레벨이 아직 recursive 함수를 다룰 때는 아닌 것 같네요.
08/10/17 08:56
나무이야기님// 지구사랑님// 두분 다...
말로만 전공하는 제가 부끄럽네요 ㅠ.ㅠ...공부좀 더 해야겠습니다; 자꾸 C 말고 다른 언어를 찾아나서게 되서..
|