답변
LCF가 무엇인지 잘 모르겠지만 GCF는 하스켈이 가장 좋아합니다. Euclidean Algroithm을 사용하면 하스켈의 작동 방식을 실제로 이해할 수 있습니다. http://en.wikipedia.org/wiki/Euclidean_algorithm 여기에 알고리즘을 설정하는 방법에 대한 훌륭한 설명이 있습니다 http://en.literateprograms.org/Euclidean_algorithm_(Haskell).
이 유형의 재귀는 하스켈에서 일반적이며 언어가 얼마나 표현력이 좋은지를 보여줍니다.
gcd a 0 = a
gcd a b = gcd b (a `mod` b)
이 어떤 수의 최대 공약수를 말 인수에 패턴 매칭을 사용하고 0은 최초의 번호입니다. 숫자가 모두 0이 아닌 경우 두 번째와 첫 번째 모드의 가장 큰 공통 요소를 찾습니다. 결국 이것은 두 번째 인수에서 0에 도달합니다. 이것은 첫 번째 패턴을 트리거하고 첫 번째 인수를 반환합니다.
함수 실제로되어야[EDIT]
:
가gcd a 0 = a
gcd a b = b `seq` gcd b (a `mod` b) where
이 이전 순환 공정의 (a mod
b)의 평가를 강제 거대한 썽크 방지 할 메모리의 경우에 내장되고 GFCing 1243235452와 6095689787662입니다. Seq는 인수를 "Weak Head Normal Form"으로 강제 설정하거나 인수의 가장 외부 데이터 구조를 평가합니다.
GCF는 가장 큰 공통 인자 또는 최대 공약수를 의미합니까? 그것은 gcd
이며, 서곡에서 얻을 수 있으며, 최소 공배수 인 lcm
입니다.
gcd
은 서곡에서 가져 왔습니다. 즉, 아무 것도하지 않고도 언제든지 사용할 수 있습니다. Erik Hinton은 자신의 구현에 관심이 있다면 유클리드 알고리즘의 간단한 버전을 보여줍니다. 그러나 한 가지 : /
은 부동 소수점 나누기에만 사용되며 div
및 mod
을 사용하면 "정수 나누기"를 수행 할 때 몫과 나머지를 찾을 수 있습니다. 서곡은 또한 최소 공배수에 대해 lcm
함수를 정의합니다.
또는 당신은 또한
euclid(n,m) =
if n == m then n
else if n < m then euclid(n, m-n)
else euclid(n-m, m)
- 1. 하스켈 물리학 하스켈
- 2. 하스켈 :
- 3. 하스켈
- 4. 하스켈
- 5. 하스켈
- 6. 하스켈
- 7. 하스켈
- 8. 하스켈
- 9. 하스켈 :
- 10. 하스켈 :
- 11. 하스켈 함수
- 12. 하스켈 타입
- 13. 하스켈 제약은
- 14. 하스켈 Word8
- 15. 회문 하스켈
- 16. 하스켈 + StablePtr
- 17. zipWith 하스켈
- 18. 하스켈 typeclass
- 19. 클로저 (하스켈)
- 20. 하스켈 ncurses
- 21. 어떻게 하스켈
- 22. 하스켈 : 비트
- 23. 하스켈 : 데이터
- 24. 하스켈 - 패턴
- 25. 타입이없는 하스켈
- 26. 하스켈 재귀
- 27. 완벽 하스켈
- 28. 하스켈 배열에
- 29. 하스켈 : 소수
- 30. 하스켈 - 조작리스트
아마 여기에'seq'에 추가해야 할 수 있습니다. – alternative
물론입니다. OP는 하스켈에게 새로운 것이지만, 이것을 배우기에 좋은 시간입니다. –
OP가 아마 이것을 알고 있을지 모르지만'lcm ab = gcd ab (div ag) * b'에서 –