撰寫一個函式,將串列中的所有正元素相乘!我試圖做到這一點,但我需要幫助,因為它不起作用。有人可以幫我解決問題嗎?我該如何解決?
positive :: (Num a, Ord a) => [a] -> a
positive x
| x> 0 = x * y
| otherwise = Nothing
Example:
positive [1..10] == 3628800
positive ([1..10] [-2, -5, -6]) == 3628800
positive [3, 5, 66, -8, -4, 5, 6, 93, -4567, 56] == 154677600
uj5u.com熱心網友回復:
你不能使用x > 0,因為x是一個串列。您可以對包含第一項和其余項(x:xs)的非空串列進行模式匹配;并為空串列。xxs[]
所以函式應該如下所示:
positive :: (Num a, Ord a) => [a] -> a
positive [] = … -- (1)
positive (x:xs)
| x> 0 = … -- (2)
| otherwise = … -- (3)
您需要填寫的…部分。如果串列為空,第一部分 (1) 應回傳結果。第二個 (2) 有一個正數x,并且應該在串列的其余部分上遞回xs并將兩者相乘。最后,第三種情況應該在 list 的其余部分上遞回xs,因為x它小于或等于零。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/444374.html
