deathquin
959
2015-06-06 12:46:26
5
2825

재귀호출을 모르는 개발자..


재귀호출에 대한 이해가 떨여저서

주말에 회사에 나와서 공부하고 있습니다..

물론 실제 프로젝트에서는 재귀호출을 사용하는 경우는

거의 없지만 웬지 알고 있어야 동저계획법같은거를 이해할 수 있겠더라구요..

근데 정말 이해가 안되니 낙담도 하는데요..

재귀호출에 대해서 정말 잘 이해할 수 있을때까지 공부를 해야하는지 궁금합니다..ㅠ

조언좀 부탁드립니다.!

0
  • 답변 5

  • 매드맥스
    5
    2015-06-06 14:06:40

    모를수도 있는거죠. 너무 낙담하거나 남들과 비교하면서 자신감 떨어뜨리지 마세요.

    모르면 공부해서 알면 되죠 ㅎㅎㅎㅎ

    자료구조 책이나 검색해도 많으닌까, 처음에 따라하면서 이해 하신담에

    응용하면서 샘플 많이 만들어보세요.


  • deathquin
    959
    2015-06-06 15:37:24

    쉬운 문제라도 좀 알려주시면 감사해요 ㅠㅠ

    반복문 안에 들어가는 재귀는 정말...

    외계인어 같네요 ㅎㅎ

  • runthe
    169
    2015-06-06 15:51:55

    재귀함수란 자기자신을 재 참조하는거자나요

    이럴경우는 로직이 비슷하니까 재 참조하겠조? 

    동일한 형태가 반복되고 종료 될수 있는 조건이 있으면 재귀함수 조건인데요

    보통 n! 이나 폴더구조를 뒤지는 로직이 있을거 같습니다!

    이제부터 알면 그만입니다.!


  • bluerain
    2k
    2015-06-08 10:17:39

    root트리
       - node1
         - node1-1
         - node1-2

       - node2
         - node2-1
           - node2-1-1


    위와 같은 트리에서

    node2-1-1을 가져오려고 할때,

    parameter로 받은 object의 하위만을 추출하여 값을 체크하는 function A(obj)가 있다고 할때

    getObjectName() 라는 function 안에서 function A()를 호출하고,

    parameter로 위의 "root트리"를 paramter로 넘기고,

    function A()의 안에서는 가져온 node의 목록중에 해당 값이 없으면

    가져온 각 항목이 하위 node가 있는 경우, 다시 function A()에 해당하는 항목을 파라미터로

    넣어 줍니다.

    그래서 원하는 값이 나오면 return으로 넘겨주는 처리를 합니다.

    실제 구현해 보지 않는다면 쉽게 이해 되지 않을 겁니다.

    또, 잘못짜면 무한루프에 빠지니 잘 짜보세요.


  • 대풍창
    159
    2015-06-08 19:12:37

    자바로 예를들면

     1부터 9까지의 합을 구하는 프로그램

    for문 형식의 반복문

    public void main()

    int sum =0; 

      for(int  idx=1 ; idx<=  9; idx++)

    {

       sum = sum +idx;

      

    System.out.println("sum =>  " +sum);  

     }

     

    재귀 함수를 이용한 반복문

    int sum = 0; 

     public void recCal(int idx)

    {

           if(idx <=9)

           {

             sum = sum +idx;

             recCal(idx +1);

          } 

     }

     

    public void main()

    {

        recCal(1); // 1부터 9까지 합이므로 1부터 시작

         System.out.println("sum => " + sum);

     

  • 로그인을 하시면 답변을 등록할 수 있습니다.