>source

의 구현정수 > > #계승Pharo에서 :

factorial
        "Answer the factorial of the receiver."
        self= 0 ifTrue: [^ 1].
        self > 0 ifTrue: [^ self * (self -1) factorial].
        self error: 'Not valid for negative integers'

이것은 꼬리 재귀 적 정의입니다. 그러나 나는 평가할 수 있습니다10000 계승작업 공간에서 오류가 없어야합니다.

Pharo는 어떠한 상황에서도 꼬리 통화 최적화를 수행합니까? 다른 최적화를 수행하는 것입니까, 아니면 정말 깊은 스택을 사용하는 것입니까?

첫 번째 iFtrue에 중단 점을 넣을 수 있습니다. 사례를 칠 수 있으며 동일한 방법이 스택에있는 횟수를 계산할 수 있습니다 ... ;-)

Amos M. Carpenter2021-05-12 05:37:34
  • 이전 css : 중첩 된 Flexbox 포장
  • 다음 python : 확률 배열을 생성합니다