재귀적 reverse() 함수
글쓴이: jsunam / 작성시간: 화, 2005/11/29 - 6:45오후
C언어 공부 중에 reverse() 함수를 "recursive function"을 이용해서
작성하라는 문제에 아래와 같이 해보았습니다.
reverse() 함수 내에 static int 로 정의한 부분과
char t[] = " "; 처럼 정의한 부분,
동적으로 메모리를 할당하는 부분이 맘에 걸리고 ...
에러 없이 잘 동작하기는 한데,
전체적으로 만족스럽지 않습니다.
물론 테스트이기 때문에 에러 처리에 대해서는 고려하지 않았습니다. :oops:
아래 코드의 문제점을 지적해 주시고,
보다 괜찮은 해결책을 알려주시면 감사하겠습니다.
#include <stdio.h> char *reverse(char *s) { static int len = -1; char t[] = " "; if (len < 0) { char *p = s; while (*p) p++; len = p - s; } if (*t = *s) return strcat(reverse(++s), t); return (char *) calloc(len + 1, sizeof(char)); } main(int argc, char *argv[]) { char *str; str = reverse(argv[1]); printf("%s\n%s\n", argv[1], str); free(str); return 0; }
Forums:
이게 과연 꼭 재귀를 써야하는지 의문입니다만, 이런건 어떤가요?[co
이게 과연 꼭 재귀를 써야하는지 의문입니다만, 이런건 어떤가요?
답변해 주셔서 감사합니다. 작성하신 코드를 보니, 공부에 도움이 많이
답변해 주셔서 감사합니다.
작성하신 코드를 보니, 공부에 도움이 많이 됩니다.
맞는 말씀이십니다. reverse() 함수를 재귀적으로 작성하기에는
좀 무리가 있어보입니다. 다만, 제가 공부하고 있는책에 재귀적으로 하라는
연습문제가 있어서... :-)
댓글 달기