꼬리 재귀 함수를 만들고 테스트하는 방법은 무엇입니까? OCaml

Chen Yo

저는 OCaml의 초보자이고 꼬리 재귀 함수를 배우고 있습니다. 이 함수를 재귀 적으로 만들고 싶지만 어디서부터 시작해야할지 모르겠습니다.

let rec rlist r n =
    if n < 1 then []
    else Random.int r :: rlist r (n-1);;

let rec divide = function
    h1::h2::t -> let t1,t2 = divide t in
        h1::t1, h2::t2
    | l -> l,[];;

let rec merge ord (l1,l2) = match l1,l2 with
    [],l | l,[] -> l
    | h1::t1,h2::t2 -> if ord h1 h2
        then h1::merge ord (t1,l2)
        else h2::merge ord (l1,t2);;

함수가 재귀인지 여부를 테스트하는 방법이 있습니까?

루크

다음을 수행 할 수 있습니다.

let rlist r n =
  let aux acc n =
    if n < 1 then acc
    else aux (Random.int r :: acc) (n-1)
  in aux [] n;;

let divide l =
  let aux acc1 acc2 = function
    | h1::h2::t -> 
        aux (h1::acc1) (h2::acc2) t
    | [e] -> e::acc1, acc2
    | [] -> acc1, acc2
  in aux [] [] l;;

그러나 나누기를 위해 나는이 솔루션을 선호합니다.

 let divide l =
   let aux acc1 acc2 = function
     | [] -> acc1, acc2
     | hd::tl -> aux acc2 (hd :: acc1) tl
   in aux [] [] l;;

let merge ord (l1,l2) = 
  let rec aux acc l1 l2 = 
    match l1,l2 with
      | [],l | l,[] -> List.rev_append acc l
      | h1::t1,h2::t2 -> if ord h1 h2
        then aux (h1 :: acc) t1 l2
        else aux (h2 :: acc) l1 t2
  in aux [] l1 l2;;

함수가 꼬리 재귀인지 아닌지 테스트하는 것에 대한 질문에 대해서는 여기에서 찾을 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

꼬리 재귀 역 목록 절차를 만드는 방법은 무엇입니까?

분류에서Dev

재귀 함수에서 꼬리와 트램폴린으로 스택 오버플로를 피하는 방법은 무엇입니까?

분류에서Dev

스칼라 : 함수 꼬리를 재귀 적으로 만들기

분류에서Dev

재귀 쿼리를 동적으로 만드는 방법은 무엇입니까?

분류에서Dev

이 함수 꼬리가 재귀 적이 지 않은 이유는 무엇입니까?

분류에서Dev

이 계승 함수를 재귀 적으로 만들 수있는 방법은 무엇입니까?

분류에서Dev

R로 꼬리가 달린 학생의 T- 테스트를 만드는 방법은 무엇입니까?

분류에서Dev

이진 트리를 생성하는 재귀 메서드를 만드는 방법은 무엇입니까?

분류에서Dev

재귀 중에 트리를 저장하는 방법은 무엇입니까? (허프만 디코딩)

분류에서Dev

PG 함수를 만들고 SQL 구문에서 트리거하는 방법은 무엇입니까?

분류에서Dev

TypeScript에서 재귀 바이너리 트리를 만드는 방법은 무엇입니까?

분류에서Dev

Scheme / Racket에서 꼬리 재귀를 사용하여 추가 절차를 구현하는 방법은 무엇입니까?

분류에서Dev

재귀를 사용하여 반응 js를 사용하여 트리 테이블을 만드는 방법은 무엇입니까?

분류에서Dev

무료 모나드 인터프리터를 재귀 적으로 만드는 방법은 무엇입니까?

분류에서Dev

함수 내에서 재귀 쿼리를 사용하는 방법은 무엇입니까?

분류에서Dev

Ruby에서 재귀 팩토리얼 함수를 작성하는 방법은 무엇입니까?

분류에서Dev

멤버 함수에서 재귀를 처리하는 방법은 무엇입니까?

분류에서Dev

트리를 재귀 적으로 실행하고, 노드를 생성하고, 함수를 호출하고, 더 깊이 들어가는 방법은 무엇입니까?

분류에서Dev

디렉토리 트리를 재귀 적으로 탐색하고 파일 만 찾는 방법은 무엇입니까?

분류에서Dev

bind9의 재귀를 비활성화하고 DNS 쿼리에 대해서만 전달을 수행하는 방법은 무엇입니까?

분류에서Dev

꼬리 재귀가 재귀를 잘못 사용하는 이유는 무엇입니까?

분류에서Dev

이 코드 테일을 재귀 적으로 만들 수있는 방법은 무엇입니까?

분류에서Dev

모듈 OCaml을 만들고 사용하는 방법은 무엇입니까?

분류에서Dev

Angular 리소스 함수를 재사용하는 방법은 무엇입니까?

분류에서Dev

재귀 함수의 요소를 지정하는 방법은 무엇입니까?

분류에서Dev

MoonScript에서 재귀 함수를 작성하는 방법은 무엇입니까?

분류에서Dev

재귀 함수를 구현하는 방법은 무엇입니까?

분류에서Dev

JavaScript에서 재귀 함수를 중지하는 방법은 무엇입니까?

분류에서Dev

이 재귀 함수를 중지하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    꼬리 재귀 역 목록 절차를 만드는 방법은 무엇입니까?

  2. 2

    재귀 함수에서 꼬리와 트램폴린으로 스택 오버플로를 피하는 방법은 무엇입니까?

  3. 3

    스칼라 : 함수 꼬리를 재귀 적으로 만들기

  4. 4

    재귀 쿼리를 동적으로 만드는 방법은 무엇입니까?

  5. 5

    이 함수 꼬리가 재귀 적이 지 않은 이유는 무엇입니까?

  6. 6

    이 계승 함수를 재귀 적으로 만들 수있는 방법은 무엇입니까?

  7. 7

    R로 꼬리가 달린 학생의 T- 테스트를 만드는 방법은 무엇입니까?

  8. 8

    이진 트리를 생성하는 재귀 메서드를 만드는 방법은 무엇입니까?

  9. 9

    재귀 중에 트리를 저장하는 방법은 무엇입니까? (허프만 디코딩)

  10. 10

    PG 함수를 만들고 SQL 구문에서 트리거하는 방법은 무엇입니까?

  11. 11

    TypeScript에서 재귀 바이너리 트리를 만드는 방법은 무엇입니까?

  12. 12

    Scheme / Racket에서 꼬리 재귀를 사용하여 추가 절차를 구현하는 방법은 무엇입니까?

  13. 13

    재귀를 사용하여 반응 js를 사용하여 트리 테이블을 만드는 방법은 무엇입니까?

  14. 14

    무료 모나드 인터프리터를 재귀 적으로 만드는 방법은 무엇입니까?

  15. 15

    함수 내에서 재귀 쿼리를 사용하는 방법은 무엇입니까?

  16. 16

    Ruby에서 재귀 팩토리얼 함수를 작성하는 방법은 무엇입니까?

  17. 17

    멤버 함수에서 재귀를 처리하는 방법은 무엇입니까?

  18. 18

    트리를 재귀 적으로 실행하고, 노드를 생성하고, 함수를 호출하고, 더 깊이 들어가는 방법은 무엇입니까?

  19. 19

    디렉토리 트리를 재귀 적으로 탐색하고 파일 만 찾는 방법은 무엇입니까?

  20. 20

    bind9의 재귀를 비활성화하고 DNS 쿼리에 대해서만 전달을 수행하는 방법은 무엇입니까?

  21. 21

    꼬리 재귀가 재귀를 잘못 사용하는 이유는 무엇입니까?

  22. 22

    이 코드 테일을 재귀 적으로 만들 수있는 방법은 무엇입니까?

  23. 23

    모듈 OCaml을 만들고 사용하는 방법은 무엇입니까?

  24. 24

    Angular 리소스 함수를 재사용하는 방법은 무엇입니까?

  25. 25

    재귀 함수의 요소를 지정하는 방법은 무엇입니까?

  26. 26

    MoonScript에서 재귀 함수를 작성하는 방법은 무엇입니까?

  27. 27

    재귀 함수를 구현하는 방법은 무엇입니까?

  28. 28

    JavaScript에서 재귀 함수를 중지하는 방법은 무엇입니까?

  29. 29

    이 재귀 함수를 중지하는 방법은 무엇입니까?

뜨겁다태그

보관