나는 시그마 표기법을 필요로하는 문제를 해결하려고 노력해 왔지만, 적어도 하스켈에서 시그마 표기법을 구현할 때마다 그 표제 변수를 사용하지 않는다. 기능. 내가 복제하려고했는데 특별한 공식은 다음과 같습니다인덱스가있는 시그마 표기법
그것은 N에서 0을 후행의 수를 계산하는 데 사용!하지만 내가 가진 것 중에 최고는 것 :
sigma :: (Enum a, Num b) => a -> a -> (a -> b) -> b
sigma i k fn = sum . map fn $ [i..k]
zeros :: Int -> Int
zeros n = sigma 1 n (???)
나는 또한 일반적인 시그마 함수를 만들려고하는데, 그 함수는 f에있는 인덱스 변수와 함께 작동한다. 이 방법이 효과가 있지만 100의 경우에는 -11 뒤에 0이옵니다. 과다?
zeros :: Int -> Int
zeros n = sigma 1 n (\i -> n `div` 5^i)
where sigma i k fn = sum $ map fn [i..k]
P. 컴파일 타임을 제한하는 인 브라우저 IDE에 관한 것. (속도 카운트)
가되지 않는'(???) (\ i -> floor (n/5^i))'? 당신의 수식이'1'에서'n '까지 합쳐 졌다고 가정하면 –
이미 시도해 보았습니다. 그리고 저에게 맞지 않습니다. 오류 메시지는 암호화되어 있습니다. – Haskelier
/tmp/haskell114913-7-1k7mzh6/Zeros.hs:7:28 : 'floor'를 사용하여 발생하는 (RealFrac Int) 인스턴스가 없습니다. 가능한 수정 : (RealFrac Int) 에 대한 인스턴스 선언 추가 식 : floor (n/5^i) '시그마'의 세 번째 인수 인 '(\ i -> floor (n/5^i)) ' 다음 식에서는 시그마 1 n > floor (n/5^i)) – Haskelier