Avatar billede soeren_dk Nybegynder
02. juni 2004 - 11:10 Der er 5 kommentarer

Hjælp til opgave om mængder

Hvem vil hjælpe mig med denne opgave om Mængder.

Opgaven er som følger:
Der findes en funktion , som afbilleder NxN->N, og som vokser hurtigere end ekponentialfunktionen.

Den er defineret som følger:
a(0,n)=n+1
a(m,o)=a(m,1,1)        for m > 0
a(m,n)=a(m-1,a(m,n-1))  for n,m > 0

Definer funktionen long int a (int m, int n)

Givet mængderne M={0,1,2,3}, N={0,1,2,3,4,5}, O={0,1,2,3,4} og P={0,1}

Vis billedemængderne for a på MxN og på OxP, dette kan gøres så resultaterne præsenteres i en matrix.

Er der nogen som har tid og lyst til at hjælpe mig med denne opgave så er der point på højkant. På forhånd tak.
Avatar billede soreno Praktikant
02. juni 2004 - 14:47 #1
Der er noget galt i definitionen (eller mangler der noget):
a(0,n)=n+1
a(m,o)=a(m,1,1)        for m > 0
a(m,n)=a(m-1,a(m,n-1))  for n,m > 0

For m > 0, hvordan kan jeg kalde a(m,1,1) ?
Funktionen a er ikke defineret for N x N x N
Avatar billede dilleberg Nybegynder
02. juni 2004 - 15:07 #2
#include <stdio.h>

// Ackerman's function
/*
a(0,n)=n+1
a(m,o)=a(m-1,1)        for m > 0
a(m,n)=a(m-1,a(m,n-1))  for n,m > 0
*/
long int a(int m, int n)
{
  int result = 0;
  if (m == 0)
    result = n + 1;
  else if (n == 0)
    result = a(m-1,1);
  else if (m > 0 && n > 0)
    result = a(m-1,a(m,n-1));

  return result;
}

int main(int argc, char* argv[])
{
  for (int m = 0; m <= 3; m++)
  {
    for (int n = 0; n <= 5; n++)
    {
      int result = a(m,n);
      printf("a(%d,%d)=%d\n",m,n,result);
    }
  }

  return 0;
}
Avatar billede dilleberg Nybegynder
02. juni 2004 - 15:09 #3
Google-søgning på 'Ackerman function' giver 64000 hits

db
Avatar billede soreno Praktikant
02. juni 2004 - 15:12 #4
Det kunne være Ackermans funktion, men det kunne jo også være en modificeret Ackerman - for at man ikke bare kan copy/paste fra nettet. Det er vel formentlig en skoleopgave.
Avatar billede dilleberg Nybegynder
02. juni 2004 - 15:19 #5
Der er vel et klassisk eksempel på en rekursiv funktion.
Der er åbenbart flere definitioner af Ackerman's funktion
f.eks. http://www.kosara.net/thoughts/ackermann.html
og http://www.nist.gov/dads/HTML/ackermann.html
Selv stavemåden er der uenighed om :-)

db
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