재귀 함수 (1)

2022. 11. 24. 13:01개인공부/C++

재귀 함수 

함수안에서 자기 자신을 호출

가독성 (어느정도 c++에 익숙해지면) , 다른 반복문에 비해서 구현이 용이하다 

편리하긴 하지만 스택을 쌓아 가기때문에 유의해서 사용해야한다. 

반드시 탈출할 수 있는 조건이 필요하다 

탈출하지 못하면 스택이 쌓이다가 스택메모리 한계에 도달하면

Stack Overflow 발생

소프트웨어에서 스택 오버플로는 스택 포이턴가 스택의 경계를 넘어설 때 일어난다. 호출 스택은 제한된 양의 주소공간을 이루며 대개 프로그램 시작시 결정된다.

 

재귀함수 팩토리얼 

재귀함수를 이용하여 팩토리얼을 구현하였다.

 

피보나치 수열

피보나치 수열 몇번째 자리 값을 구하는 함수를 만들었다

이 과정에서 1,2번째는 1값으로 고정이고 그후 3번째부터는 이전 2개의 숫자의 합이므로 

pre1 +pre2 값으로 정의하였다 그리고 pre1값에 먼저 pre2값을 넣어야 오류가 발생하지 않는다.

 재귀함수 피보나치 수열

-오류 해결과정 -

처음에는 재귀함수로 피보나치 수열을 제작하였는데 분명 함수를 잘 구현했는데 이상한 값이 나와서 중단점을

이용하여 디버깅하여 확인한 결과 Fibonacci_ Re 를 이용한것이 아닌 위쪽코드의  Factorial_Re 함수를 사용하여 

오답으로 계산하고있었다 다시 원래 피보나치 재귀함수를 이용하여 컴파일결과 잘 실행되었다.

-더 알아야할 점-

컴파일 과정에서 재귀함수는 스택을 쌓아나가는 과정이라 피보나치 수열의 값이 커질수록 컴파일 속도가 느려졌는데

더 공부하여 함수의 작동원리를 이해하고 왜 속도가 느려지는지 공부할 예정이다.

'개인공부 > C++' 카테고리의 다른 글

변수 / 분할구현  (0) 2022.11.25
배열 , 구조체  (0) 2022.11.25
함수로 Factorial 구현  (0) 2022.11.23
Visual Studio 단축키  (0) 2022.11.23
반복 문 if , while  (0) 2022.11.23