Avatar billede Slettet bruger
07. september 2010 - 18:30 Der er 4 kommentarer

SML ? Binomial Koefficient? How to ?

Er lige begyndt at lære SML, bruger programmet Moscow ML.

Vil gerne kunne erklære en funktion binomk, og når man kalder den skal det have output:

(n)
(k)


Nogen forslag? :)
Avatar billede arne_v Ekspert
07. september 2010 - 19:57 #1
Nu er ML uden for mit videns omraade men givet at det kan beregnes som n!/(k!*(n-k)!) saa skal du vel bare have en funktion som beregner ud fra en fakultet funktion som du saa laver rekursivt.
Avatar billede Slettet bruger
07. september 2010 - 20:08 #2
det kan det nemlig, men er i tvivl om hvordan det gøres :D
Avatar billede Slettet bruger
08. september 2010 - 12:45 #3
er nu kommet frem til:

fun fact n =
            if n = 0
            then 1
            else n * fact(n-1);

fun binomk(n, k) = if n>= k >= 0
                  then fact(n) div (fact(k)*fact(n-k))
                  else 1;

men den giver en fejl:

fun binomk(n, k) = if n>= k >= 0
!                              ^
! Type clash: expression of type
!  int
! cannot have type
!  bool

Kan jeg sætte et eller andet ind så 0 bliver int ?
Avatar billede arne_v Ekspert
08. september 2010 - 19:43 #4
Jeg kender som sagt ikke ML men i de fleste andre sprog ville man skulle skrive:

fun binomk(n, k) = if n >= k && k >= 0
                  then fact(n) div (fact(k)*fact(n-k))
                  else 1;

eller

fun binomk(n, k) = if n >= k and k >= 0
                  then fact(n) div (fact(k)*fact(n-k))
                  else 1;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester