상세 컨텐츠

본문 제목

스크래치 프로그래밍: 재귀호출 구현

프로그래밍/스크래치

by 삶의 재발견 2014. 2. 20. 15:39

본문

반응형

■ 재귀호출(Recursion)


재귀호출은 자기 자신을 참조하거나 호출하여 문제를 해결하는 방식을 의미합니다.


5!를 구하는 경우, 다음과 같이 2가지 방법으로 답을 구할 수 있습니다. 

  • 첫번째, 5!=5X4X3X2X1로 생각하는 방법이며,
  • 두번째는 재귀적 방법으로 다음과 같이 진행하는 것입니다.


5! 을 구하기 위해서는 4!값에 5를 곱하면 되고, 4!값은 3!값에 4를 곱하면 되고....


5!=4*4!

       → 4!=4*3!

                 → 3!=3*2!

                           → 2!=2*1!


결국 n!값을 구하는 방법은 n-1! 값을 구하면서 단계적으로 진행하는 것입니다.


따라서, n! 값을 반환하는 함수 Fact(n)이 있다고 하면 

1. 내부적으로 Fact(n)이 수행이되면 내부에서 Fact(n-1)을 호출 하고,

2. 다시 내부적으로 Fact(n-2)를 호출하는 방식으로 계속 수행

3. Fact(1)=1 까지 계산하면 됩니다.



■ 재귀호출 구현하기


프로그램 언어로는 다음과 같이 함수로 구현하게 됩니다.


int factorial(int n) 

 {

     if (n <= 1) 

         return 1;

     else

         return n * factorial(n-1);

 }


이를 스크래치 프로그램에서 구현하려면 "방송하기"와 "방송을 받았을 때"를 다음과 같은 형식으로 활용하면 됩니다.


우선 다음과 같이 변수3개를 정해야 합니다.

  • x: 실제 팩토리얼 값을 구할 변수로 5!의 5와 같은 의미
  • Result: 최종 팩토리얼 값이 계산되는 변수: 5!=5*4*3*2*1=120에서 120값을 의미
  • y: 5!=5*4! 을 계산하는 중간값을 계산하기 위해 필요한 변수


반응형

관련글 더보기