본문 바로가기

C or C++/C or C++ 설명

재귀함수란 무엇인가?

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

재귀함수란 무엇인가?

 

재귀 함수(recursive function) 란?

  직간접적으로 자기 자신을 호출시키는 함수이다.

 

재귀함수가 쓰일때는?

   불필요한 변수를 줄이고 반복문을 사용하지않고도 반복문처럼 사용할때  쓰이는것이 재귀함수이다.

 

재귀함수 사용시 유의할점은?

  반드시 끝나는 지점을 정해줘야한다.

  그렇지않게되면 함수가 무한적으로 돌기때문에 프로그램이 죽을수가있다.

 

  재귀함수는 반복문보다는 빠르지않는것으로 안다 그러므로 불필요하게 사용하지않는것이 좋다.

  큰값은 재귀함수로처리하지말고 반복문으로 처리하는것이 좋다

 

간단한 재귀함수 예

  1부터 n까지 출력하는 프로그램을 만들때 재귀함수로는 이런식으로 만들수가있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
void re(int a,int cnt)
{
    if(cnt==a+1)    return;
    printf("%d\n",cnt);
    re(a,cnt+1);
}
void main()
{
    int a;
    int i=1;
    scanf("%d",&a);
    re(a,i);
}
cs

 

1값과 n값을넘겨주면서 계쏙 호출하는 방식이다 하지만 이방법은 추천하지않는다

 

아래 코드를 보면 알수가있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int rr(int n)
{
    if(n==0return 0;
    rr(n-1);
    cout<< n << " " ;
}
int main()
{
    int n;
    cout<<"n값 입력 : "cin >> n;
    rr(n);
}
cs

위에는 예전에 짜둔 c코드고 아래는 C++코드지만 매우 유사한코드이다

 

위에코드는 1을담는 변수를 하나더 생성하였지만 아래코드는 1을담는 변수따윈 필요없다

 

아래코드를보고 몆몆사람은

 

5 , 4, 3 , 2, 1 이런식으로 출력될거같지만  그것이아니다 .

 

n이 0이될때까지 계속계속 자기자신 -1 값을 인자에넣고 호출시키고

 

여기서 n이 0이되면

 

그떄부터 반환되면서

 

1 , 2 , 3  , 4 , 5 이런식으로 출력하게된다

 

'C or C++ > C or C++ 설명' 카테고리의 다른 글

C언어 -Hello World! 출력하기-  (0) 2014.11.11
C언어란 무엇인가?  (5) 2014.11.09