#include<iostream>
using namespace std;
int j=0;
int ack(int n, int m){
::j+=1;
if (n == 0)
{
return (m + 1);
}
else if (m == 0)
{
return ack((n - 1), 1);
}
else
{
return ack(n - 1, (ack(n, (m - 1))));
}
}
int main () {
int h=0;
int m;
int n;
char wiederholen='w';
do {
cout<<" Geben sie Wert n ein: ";
cin>> n;
cout<<" Geben sie Wert m ein: ";
cin>> m;
if (n==0 && m==0)
{
cout<<" Es ist ein Fehler aufgetreten! "<<endl;
}
else
{
cout<< "Das Ergebnis fuer Ackerman-Funktion ist: "<< ack(n,m) <<endl;
cout<< "Die Ackermann-Funktion wurde " << j-h << " Mal aufgerufen! "<<endl;
cout<< "Maximale Tiefe ist: "<< <<endl;
}
h=j;
cout<<"Fuer die Wiederholung des Programms druecken Sie w ! ";
cin>>wiederholen;
} while ( wiederholen=='w');
return 0;
}
I trebam dobiti ovdje je maksimalnu dubinu rekurzije.... npr ovako da bude:
kod ack( 2, 2 ) gibt es:
Rezultat: 7
Maksimalna dubina: 7
Broj prozivanja: 27
kod ac( 2, 3 )
Rezultat: 9
Maksimalna dubina: 9
Broj prozivanja: 44
kod ac( 3, 4 )
Rezultat: 125
Maksimalna dubina: 126
Broj prozivanja: 10307
sa ovim programom dobijem rezultat i broj pozivanja ali kako mogu dobiti i dubinu ne znam... zna li neko kako se to moze?