c언어 재귀함수 연습 원인좀 알려주세요.
재귀함수로 반복문 연습해보는중인데 저가 원하는 출력문은
*****
****
***
**
*
이렇게 나오는것인데 저위에 코드대로 해보면
*****
****
***
**
*
*****
출력문이 이런형태로 나오게되는데 원인좀 알려주세요!.
왜 한번더 돌게 되는지 설명좀 해주세요.
일단 완전 잘못 짰습니다. |
○ for_1 함수 중간에 main() 함수를 다시 호출하는 것부터 완전 잘못된 코드입니다. 이것은 재귀함수가 아닙니다.
○ 코드를 고쳐줄까하고 보다가, 너무 모르는 것이 많은 것 같아서, 완전히 다시 짜서 올립니다.
1. 코드가 컴파일되서 돌지도 않습니다. 예를 들어, for_1() 함수의 return을 int 형으로 선언하셨는데, 실제로는 end==0 인 케이스에서 return; 만 하고 있습니다.
2. main() 함수를 다른 함수에서 다시 호출하는 것은 절대 안됩니다.
3. 함수 이름, 변수 이름을 의미 없게 짓는 것은 피하셔야 합니다.
4. static 선언도 재귀함수의 원래 의도와 맞지 않습니다.
코드 예제 |
#includevoid printStar(int n); int main() { printStar(5); //Print Star getchar(); //Just for break return 0; } void printStar(int n) { int i; if (n > 0) { for (i = 0; i < n; i++) { printf("*"); } printf("\n"); printStar(n - 1); //Recusive Call } else { return; } }
실행 결과 |
'ECIM list (Help!)' 카테고리의 다른 글
Const (한정자) 관련 질문입니다. (0) | 2015.09.03 |
---|---|
두 정수의 최대공약수 구하기 - 디버깅 (0) | 2015.09.03 |
피보나치 수열 비재귀방법으로 풀기 - Fibonacci number without recursion (0) | 2015.08.30 |
배열 구조체를 이용한 성적출력 - 버블소팅 예제 (Bubble soring example) (0) | 2009.02.10 |
Find next biggest binary number : 다음으로 큰 2진수 찾기 (3) | 2009.02.10 |