F # 재귀 함수 인수 및 스택 오버플로

AR

저는 F #을 처음 접했고 일부 재귀 함수로 작업 할 때 이상한 동작을 발견했습니다. 아래에 두 가지 버전이 있습니다.

버전 1 :
이로 인해 스택 오버플로가 발생하지만 그럴 필요는없는 것 같습니다 (적어도 멍청한 눈에는)

let rec iMake acc =
  match acc with
  | 10 -> 100
  | _ -> iMake acc+1

Version2 :
이것은 내가 예상했던대로 작동합니다.

let rec iMake acc =
  match acc with
  | 10 -> 100
  | _ -> iMake (acc+1)

유일한 차이점은 버전 2는 acc + 1 표현식을 괄호 안에 넣는 것입니다. 제 질문은 왜 첫 번째 버전은 작동하지 않지만 두 번째 버전은 작동합니까? 이것은 미래에 이런 유형의 것을 피하기 위해 모든 함수 인수를 괄호 안에 넣어야 함을 의미합니까?

유진 포틴

Function call이항 연산자보다 우선 순위가 높습니다 +. 따라서 첫 번째 기능은 실제로 다음과 같이 작동합니다.

let rec iMake acc =
    match acc with
    | 10 -> 100
    | _ -> (iMake acc)+1

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

스택 및 재귀 함수

분류에서Dev

Corona SDK의 재귀 함수에서 Lua 스택 오버플로

분류에서Dev

스택 오버플로를 일으키는 Kotlin 꼬리 재귀 함수

분류에서Dev

재귀 함수를 사용하는 동안 C ++ 스택 오버플로

분류에서Dev

재귀 함수를 구현하는 동안 스택 오버플로 오류 (계수)

분류에서Dev

꼬리 재귀 함수가 여전히 스택 오버플로를 얻을 수 있습니까?

분류에서Dev

재귀 함수로 인한 스택 오버플로 오류를 수정하는 방법은 무엇입니까? C ++

분류에서Dev

재귀 함수 및 mysqli 닫기 오류

분류에서Dev

F #의 예외가있는 재귀 스택 오버플로

분류에서Dev

재귀로 인한 스택 오버플로 오류

분류에서Dev

오버플로 : 재귀 함수의 수학 범위 오류

분류에서Dev

재귀 및 함수 호출

분류에서Dev

스택 오버플로 오류를 일으키는 재귀 함수를 어떻게 디버깅 할 수 있습니까?

분류에서Dev

재귀 함수에서 버퍼 오버 플로우

분류에서Dev

함수 호출 스택 오버플로

분류에서Dev

재귀 함수의 스택 구현

분류에서Dev

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

분류에서Dev

gdb 및 현재 함수 스택

분류에서Dev

무차별 대입 알고리즘으로 인해 스택 오버플로가 발생할 수 있습니까? (재귀)

분류에서Dev

재귀 함수 내에서 실패한 할당 포착 시도 : 처리되지 않은 예외 / 스택 오버플로

분류에서Dev

재귀 호출 오버플로 스택

분류에서Dev

재귀 함수 및 클래스의 Raku 유형 제한

분류에서Dev

재귀 함수 및 클래스의 Raku 유형 제약

분류에서Dev

함수 오버로딩 및 템플릿

분류에서Dev

재귀 쿼리에 대한 역방향 체인 스택 오버플로

분류에서Dev

함수 템플릿 및 상속 된 인수 오버로딩

분류에서Dev

일치 패턴 오류가있는 F # 재귀 함수

분류에서Dev

함수의 값을 재귀 적으로 계산 f = n! / (c ^ n)

분류에서Dev

프롤로그 재귀 및 변수

Related 관련 기사

  1. 1

    스택 및 재귀 함수

  2. 2

    Corona SDK의 재귀 함수에서 Lua 스택 오버플로

  3. 3

    스택 오버플로를 일으키는 Kotlin 꼬리 재귀 함수

  4. 4

    재귀 함수를 사용하는 동안 C ++ 스택 오버플로

  5. 5

    재귀 함수를 구현하는 동안 스택 오버플로 오류 (계수)

  6. 6

    꼬리 재귀 함수가 여전히 스택 오버플로를 얻을 수 있습니까?

  7. 7

    재귀 함수로 인한 스택 오버플로 오류를 수정하는 방법은 무엇입니까? C ++

  8. 8

    재귀 함수 및 mysqli 닫기 오류

  9. 9

    F #의 예외가있는 재귀 스택 오버플로

  10. 10

    재귀로 인한 스택 오버플로 오류

  11. 11

    오버플로 : 재귀 함수의 수학 범위 오류

  12. 12

    재귀 및 함수 호출

  13. 13

    스택 오버플로 오류를 일으키는 재귀 함수를 어떻게 디버깅 할 수 있습니까?

  14. 14

    재귀 함수에서 버퍼 오버 플로우

  15. 15

    함수 호출 스택 오버플로

  16. 16

    재귀 함수의 스택 구현

  17. 17

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

  18. 18

    gdb 및 현재 함수 스택

  19. 19

    무차별 대입 알고리즘으로 인해 스택 오버플로가 발생할 수 있습니까? (재귀)

  20. 20

    재귀 함수 내에서 실패한 할당 포착 시도 : 처리되지 않은 예외 / 스택 오버플로

  21. 21

    재귀 호출 오버플로 스택

  22. 22

    재귀 함수 및 클래스의 Raku 유형 제한

  23. 23

    재귀 함수 및 클래스의 Raku 유형 제약

  24. 24

    함수 오버로딩 및 템플릿

  25. 25

    재귀 쿼리에 대한 역방향 체인 스택 오버플로

  26. 26

    함수 템플릿 및 상속 된 인수 오버로딩

  27. 27

    일치 패턴 오류가있는 F # 재귀 함수

  28. 28

    함수의 값을 재귀 적으로 계산 f = n! / (c ^ n)

  29. 29

    프롤로그 재귀 및 변수

뜨겁다태그

보관