ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 재귀 호출 비교
    컴공지식/프로그래밍언어론 2024. 10. 27. 16:43

    1번 코드

    {with {fac 
           {with {facX {fun {facY}
                        {with {fac {fun {x}
                                    {{facY facY} x}}}}
                          {fun {n}
                            {if0 n 1
                                 {* n {fac {- n 1}}}}}}}}
            {facX facX}}}
     {fac 10}}

     

    2번 코드

    {with {fac {fun {n}
                 {if0 n 1
                      {* n {fac {- n 1}}}}}}
     {fac 10}}

     

    간단하게 말하면,

    1번은 고차 함수(High-order function)를 사용해서 복잡한 고차 함수 방식을 사용해서 재귀를 흉내낸 거고, 2번은 은 그냥 직접적인 재귀 호출을 사용한 간단한 방식이다.

     

    다음은 rec을 추가한 문법이다.

    {rec {fac {fun {n} 
                {if0 n 1 
                     {* n {fac {- n 1}}}}}}
     fac 10}

     

    rec를 사용해서 바로 자기 자신을 재귀 호출할 수 있다.

     

    '컴공지식 > 프로그래밍언어론' 카테고리의 다른 글

    Box 데이터 구조  (2) 2024.11.02
    재귀로 인해 추가된 코드 부분  (1) 2024.10.27
    에타 축약이란?  (1) 2024.10.27
    재귀 BNF  (1) 2024.10.27
    조건문 BNF  (2) 2024.10.27
Designed by Tistory.