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

时间:2014-03-29 06:04:44

标签: c++ stack garbage

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

它打印垃圾值。假设它只接受可接受的值(索引在边界内),错误处理是我稍后会做的。

1 个答案:

答案 0 :(得分: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();
}