작업 : 형식 minimum_recursive :: (a -> a -> Bool) -> [a] -> a
형식의 함수를 작성하려고합니다. 첫 번째 매개 변수의 경우 두 개의 매개 변수를 사용하는 less
이라는 함수를 허용하고 첫 번째 매개 변수가 두 번째 매개 변수보다 작 으면 True를 반환하고 그렇지 않으면 False를 반환합니다. minimum_recursive
은 두 번째 매개 변수로 목록을 받아들입니다. 명시 적 재귀를 사용하면 minimum_recursive
은 입력 목록 [a]에서 가장 작은 값을 결정해야합니다.하스켈에서 명시 적 재귀
내 생각 : 나는 누산기를 허용하는 도우미 함수에 실제 재귀를 넣으려고했다. 첫 번째 항목을 누적기로 사용하여 도우미 함수를 호출합니다. 내가 지금까지 무엇을 가지고
: 지금까지 나는 다음과 같습니다
-- function as first parameter to min'
-- accepts two params, returns True if
-- first must come before second in sorted
-- order
less :: Ord a => a -> a -> Bool
less a b = a < b
-- Subpart B
minimum_recursive :: (a -> a -> Bool) -> [a] -> a
minimum_recursive func list = minimum_recursive_h func list []
심지어 minimum_recursive_h
을 쓰기 시작하는 방법을 알아내는 문제을 데.
참고 : 나는이 작업을 수행하는 더 쉬운 방법이 있음을 알고 있지만 위에 지정된대로 그것에 대해 알아야합니다.
숙제 문제 인 경우이를 숙제로 지정해야합니다. 어쨌든 여기에 포인터가 있습니다 : 기본 케이스는 간단합니다. 이제는 길이가 n-1 인리스트에서 최소 요소를 찾은 함수가 있다고 가정합니다. 현재 요소와 결합하여리스트에 대한 답을 얻으려면 어떻게할까요? 길이가'n'입니까? – Vitus
길이가 n-1 인 목록의 최소 요소를 찾은 다음 원래 목록의 요소 n과 비교해 보겠습니다. 나는 이것에 대한 하스켈 구문을 모른다. 나는 약간의 연구를 할 것이다. –
표준 라이브러리의 [minimumBy] (http://hackage.haskell.org/packages/archive/base/latest/doc/html/src/Data-List.html#minimumBy) 소스도 참조하십시오. –