堆栈函数应该返回指定的元素,而不是返回垃圾值

Stack function supposed to return a specified element, instead returns garbage value

本文关键字:返回 函数 堆栈 元素      更新时间:2023-10-16
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();
}