[ programiranje @ 29.11.2008. 23:09 ] @
#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? |