C++ 堆栈函数应该返回指定的元素,而不是返回垃圾值 intgetelement(堆栈s,inti){ 如果(i>1){ s、 pop(); getElement(s,i-1); } 其他的 返回s.top(); } int main(){ 叠煎饼; 煎饼。推(1); 煎饼。推(2); 煎饼。推(3); printf(“%d”,getElement(煎饼,2)); }

C++ 堆栈函数应该返回指定的元素,而不是返回垃圾值 intgetelement(堆栈s,inti){ 如果(i>1){ s、 pop(); getElement(s,i-1); } 其他的 返回s.top(); } int main(){ 叠煎饼; 煎饼。推(1); 煎饼。推(2); 煎饼。推(3); printf(“%d”,getElement(煎饼,2)); },c++,stack,garbage,C++,Stack,Garbage,救命啊!我的getElement函数返回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

救命啊!我的getElement函数返回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 main(){
    stack<int> pancakes;
    pancakes.push(1);
    pancakes.push(2);
    pancakes.push(3);
    printf("%d",getElement(pancakes,2));


 }
intgetelement(堆栈s,inti){
如果(i!=1){
s、 pop();
getElement(s,i-1);
}
其他的
返回s.top();
}

intgetelement(堆栈s,inti){
如果(i!=1){
s、 pop();
return getElement(s,i-1);//缺少return的行。
}
其他的
返回s.top();
}

仔细阅读你的函数,告诉我如果
i
不等于1,它会返回什么。这不可编译。编译器警告应该打开的确切原因。非常感谢!我离开C++已经有一段时间了,我忘记了递归是如何工作的。谢谢!NolanDeogracias如果您是一个类似于语言的模式,其中最后一个表达式的值是返回值,那么在C/C++中很容易犯错误。
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();
}