n über k < Haskell < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 15:41 Sa 09.02.2008 | Autor: | wolle238 |
Hi alle samt!!!
Ich bin grad am verzweifeln... Ich schreibe nächste Woche meine Info 1 Klausur über Java und Haskell. Jetzt bin ich am lernen und versuche "n über k" mit Hilfe von Haskell zu programmieren. Also die einfache Rechnung [mm] \vektor{n \\ k} = \frac{n!}{(n-k)!k!} [/mm] soll der mir ausrechnen... ich habe nun das so gemacht:
----
1 over :: Int -> Int -> Int
2 over n k | n == k = 1
3 | k == 0 = 1
4 | otherwise = fak (n) 'div' (fak (n-k) * fak (k))
5
6 fak :: Int -> Int
7 fak 0 = 1
8 fak (n) = product[1..n]
---
der gibt mir aber leider den Fehler: "(line 4): Improperly terminated character constant" aus....
Kann mir einer sagen, was das für ein Fehler ist und was ich tun muss, das der mir einfach das Ergebnis ausgibt??
Wenn ich in der 4. Zeile das 'div' durch '/' ersetze, kommt der Fehler: "(line 2): Instance of Fractional Int required for definition of over"
Schonmal danke für eure Hilfe!!
MfG Wolle
Ok.... Problem gelöst!!!
die Probleme waren:
Zeile 6 darf nicht drin stehen und Zeile 7 ist unnötig (aber verursacht keinen Fehler)....
Und Zeile 1 darf auch nicht sein...
Jetzt ist meine Fragt, warum das die Fehler verursacht?? Kann mir jemand helfen??
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:07 So 10.02.2008 | Autor: | upskuhr |
Hallo,
ich kenne Haskell als Programmiersprache nicht. Was mich aber skeptisch gemacht hat ist.
> 1 over :: Int -> Int -> Int
Wenn ich das richtig verstehe ist "over" als Funktion deklariert, die 2 Int als Parameter erwartet und ein Int zurückgibt. Da du aber ja dividierst, kannst du kein int zurückgeben sondern musst ein double oder float (oder wie auch immer das in Haskell heißen mag).
Das würde auch diese Fehlermeldung erklären:
> "(line 2): Instance of Fractional Int required for definition of over"
|
|
|
|