int getElement(stack<int> s,int i){
if(i>1){
s.pop();
getElement(s,i-1);
}
else
return s.top();
}
int main(){
stack<int> pancakes;
pancakes.push(1);
pancakes.push(2);
pancakes.push(3);
printf("%d",getElement(pancakes,2));}
Помогите! Моя функция getElement возвращает элемент в i, где i начинается с верхнего значения стека со значением 1.
Когда я запускаю getElement (2), он должен вернуть 2 в стеке:
3 — индекс 1,
2 — индекс 2 и
1 — индекс 3
он печатает значение мусора. Предположим, он принимает только те значения, которые являются приемлемыми (индекс находится в пределах границ), обработка ошибок — это то, что я сделаю позже.
Вам не хватает return
заявление.
+ Изменить
int getElement(stack<int> s,int i){
if(i!=1){
s.pop();
getElement(s,i-1);
}
else
return s.top();
}
в
int getElement(stack<int> s,int i){
if(i!=1){
s.pop();
return getElement(s,i-1); // The line with the missing return.
}
else
return s.top();
}
Других решений пока нет …