#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;
}
私は再帰関数の概念に慣れていません。このコードは、配列の最大要素を見つけるために書かれています。ただし、スタックオーバーフローエラーが発生しています。誰でもそれを修正できますか?また、再帰を挿入する場所を正確にはわかりません。再帰関数からのスタックオーバーフローエラー
上記のコードは、読みやすいようにインデントする必要があります。あなたの問題として、getlargestがそれと同じ配列を持って自分自身を呼び出すのを確認します。何も変わらないので、再帰は終了する機会がありません。あなたは何かを押す必要があります - あなたはポインターで++を行うことができます。あるいは、配列をグローバルに保ち、インデックスiだけを繰り返すことができます。 – dercz