재귀 호출시 무한루프 문제 해결
재귀함수의 문제를 해결하기 위해 함수를 종료하고 반환할려면 return문 추가
재귀함수 호출 전에 종료하기 위한 조건을 반드시 수행해주어야 합니다.
학습내용
지역변수 선언 후 재귀함수 호출
정적변수 사용하여 재귀함수 호출
소스코드
#include <stdio.h>
// 함수의
선언(출력X입력X 형태) void recursiveCall(void);
int main(void) { recursiveCall( ); // 함수의
호출 return 0; }
// 함수의
정의 void recursiveCall(void) {
int i=1; //지역변수, 초기화
매번
수행, 메모리
소멸은
중괄호
탈출될때 // static int i=1; //정적지역변수, 초기화는
한번만
수행, 메모리
소멸은
프로그램
종료될
때
//종료하기
위한
조건
수행 if(i>7) // 함수의
무한
반복
문제를
해결하는
조건 return; // 값을
반환하지
않고
그냥
함수를
종료 printf("Recursive Call %d회
수행\n", i); i=i+1; // i 값을
증가
recursiveCall( ); //자기
자신을
호출
} |
출력결과
지역변수 선언후 조건 수행시
- void recursiveCall(void) {
-
- int i=1; // 지역변수
-
- if(i>7) // 함수의 무한 반복 문제를 해결하는 조건
- return; // 값을 반환하지 않고 그냥 함수를 종료
- printf("Recursive Call %d회 수행\n", i);
- i=i+1; // i 값을 증가
-
- recursiveCall( ); //자기 자신을 호출
-
- }
|
정적변수 사용하여 조건 수행시
- void recursiveCall(void) {
-
- static int i=1; //정적지역변수
-
- if(i>7) // 함수의 무한 반복 문제를 해결하는 조건
- return; // 값을 반환하지 않고 그냥 함수를 종료
- printf("Recursive Call %d회 수행\n", i);
- i=i+1; // i 값을 증가
-
- recursiveCall( ); //자기 자신을 호출
-
- }
|