내가 꼬리 재귀를 사용하여 주어진 요소의 인덱스를 찾기 위해 함수를 작성하려고를 사용하여 주어진 요소의 인덱스를 찾기. 목록 1
10
까지의 숫자를 포함라고, 나는 5
검색하고, 출력이 4
을해야 할 수 있습니다. 내가 겪고있는 문제는 꼬리 재귀를 사용하여 '계산'하는 것입니다. 그러나,이 경우 재귀 호출 수를 maunally 'count'해야하는지 잘 모르겠습니다. 나는 특정 위치에 요소를 반환하기 때문에 도움이되지 않는 !!
을 사용해 보았습니다. 특정 요소 (정확한 반대 위치)의 위치를 반환하는 함수가 필요합니다. 꼬리 재귀
코드 :
whatIndex a [] = error "cannot search empty list"
whatIndex a (x:xs) = foo a as
where
foo m [] = error "empty list"
foo m (y:ys) = if m==y then --get index of y
else foo m ys
참고 : 나는 라이브러리 함수를
감사합니다 : 귀하의 경우 그래서
가 아닌 꼬리 재귀 솔루션은 아마 당신이 일정한 공간 (즉, 긴 목록에 스택을 날려되지 않음)에서 실행됩니다 것을 줄 수있는 가장 쉬운 일입니다 추천을 위해. '위대한 선을 위해 하스켈을 배워라! '는 내가 하스켈을 배우기 위해 현재 사용하고있는 것입니다. 자신이 생각할 위치가 없다고 가정해서는 안됩니다. 사소한 것처럼 보이는 질문은 다른 사람들에게는 사소한 질문이 아닐 수도 있습니다. 그래서 나는 당신에게 그러한 '스팸'코멘트를 남겨 둘 것을 권한다.) – AnchovyLegend