저는 하스켈에 대해 새로운 지식을 갖고 있으며 몇 가지 기본 사항을 이해하려고합니다. 재귀 함수를 작성할 때, 필자는 자연스럽게 재귀 적 또는 꼬리 재귀 적 방식으로 작성합니다.재귀 함수를 테일 재귀로 변환
내 질문은 :
어떤 재귀 함수를 감안할 때, 꼬리 재귀로 변환 할 수있는 간단한 방법이 있을까요?
꼬리 재귀 함수가 있으면 재귀 적으로 쉽게 변환 할 수 있습니까?
예 기능
또한addOne [] = []
addOne (x:xs) = (x+1):addOne xs
, 함수를 작성할 때, 꼬리 재귀가 대안을 더 적합한 지 알 수있는 가장 쉬운 방법은 무엇입니까?
"꼬리 재귀 함수를 사용하면 재귀 적으로 쉽게 변환 할 수 있습니까?"- 모든 꼬리 재귀 함수는 자연스럽게 재귀 적입니다. 그렇지 않습니까? –
예,하지만 이것은 제 질문과 아무런 관련이 없습니다. 재귀 적 함수와 꼬리 재귀 함수를 작성하는 것은 동일한 작업을 수행 할 수있는 완전히 다른 두 개의 프로그램 (구문 적으로)입니다. 따라서 하나는 다른 것으로 변환 될 수 있습니다. – AnchovyLegend
@Mi : 아니요, 꼬리 재귀 함수는 항상 반복적이며 함수는 그 자체와 완전히 다른 것이 아니라 구문 적으로도 다른 어떤 측면에서도 다릅니다. –