Q : 이것이 C# 이다. p188 | 재귀 호출의 피보나치 수

2020. 4. 26. 01:52잡다한 게시물/Q&A

반응형

 

저도 이것 때문에 고생좀 했습니다.. 하하

우선 답변드리기 전에 재귀 호출에 관한 영상을 첨부하겠습니다. 

 

https://dojang.io/mod/page/view.php?id=585

 

C 언어 코딩 도장: 67.2 재귀호출로 팩토리얼 구하기

이번에는 재귀호출을 사용하여 팩토리얼(factorial)을 구현해보겠습니다. 팩토리얼은 1부터 n까지 숫자를 차례대로 곱한 값이며 ! (느낌표) 기호로 표기합니다. 예를 들어 5!은 5 * 4 * 3 * 2 * 1이며 결과는 120입니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요. factorial.c #include int factorial(int n) { if (n == 1) // n이 1일 때 return 1; // 1을 반환하고 재

dojang.io

영상을 보시면

한개의 'return 재귀함수() + n'의 재귀함수는

하나의 스택으로 묶여지게 됩니다.

 

책에 설명된

return '재귀함수() + 재귀함수()' 는

한번에 return이 될 때마다 2개의 스택으로 묶여지게 되는것이죠.

 

스택의 개념은 찾아보시는게 좋아요! 프로그래밍 공부를 시작하시게 되면

언제든지 언급되는 단어입니다.

 

간단히 설명드리면

스택은 컴퓨터에 저장되는 공간을 의미합니다.

위에서 부터 차곡차곡 쌓이게 되죠.

 

자 이 스택을 머리로 그리면 어려우니

생성되는 순서와 동작을 그림으로 표현해 드릴께요.

 


Unity를 사용한거라 Main구문이 다르지만 동작은 같습니다.

우선 제가 실행했던 코드입니다.

피보나치 변수가 동작할 때마다 출력을 해주기로 했어요.

* Debug.Log() 는 WriteLine() 이랑 같습니다!

 

Fibonacci(3) 으로 동작을 시켜보겠습니다.

색깔은.. 신경쓰지 말아주세요 Unity...

코드를 실행해서 나온 출력물입니다.

이걸 그림으로 표현을 해볼꼐요.

 

 

주저리 주저리 썼는데.. 이해가 되셨을까요..

 

결국 '재귀 함수'는 자기 자신을 계속해서 실행하게 되므로 

 

if ( n < 2 ) 구문에서 중지가 됩니다. 결국 마지막은 0 또는 1 이라는 수가 나오겠죠.

이 수를 계속해서 더하고 올리고 더하고 올리고를 반복하는 순서입니다.

 

이런 느낌이랄까..?

 

이해가 되셨으면 좋겠네요!

혹시 이해한가시는건 여기에 댓글 달아주세요.

반응형