#include<iostream>
#include<string>
#include<sstream>
#include<conio.h>
#include<vector>
#define MAX 100
using namespace std;
int size;
int getlargest(int arr[ ]){
static int max = -1000;
static int i = 0;
if(i < size){
if(arr[i] >= max){
max = arr[i];
i++;
}
getlargest(arr);
}
return max;
}
int main(){
int res;
cout << "enter the size please: ";
cin >> size;
int arr[MAX];
for(int i=0;i<size;i++){
cin >> arr[i];
}
res = getlargest(arr);
cout << res;
getch();
return 0;
}
Ich habe keine Erfahrung mit dem Konzept der rekursiven Funktionen. Dieser Code wurde geschrieben, um das maximale Element eines Arrays zu finden. Ich bekomme jedoch einen Stapelüberlauffehler. Kann es jemand korrigieren? Außerdem weiß ich nicht genau, wo ich die Rekursion einfügen soll.Stapelüberlauffehler von rekursiver Funktion
sollten Sie Ihren Code oben einrücken, damit es einfacher liest. Bei Ihrem Problem bemerken Sie, dass getargest sich selbst mit dem gleichen Array aufruft, das es bekommen hat - nichts ändert sich, so dass die Rekursion keine Chance hat, zu beenden. Sie müssen etwas schieben - Sie können ++ auf den Zeiger tun, ODER Sie können das Array global halten und nur auf dem Index i wiederholen. – dercz