C++ 堆栈函数应该返回指定的元素,而不是返回垃圾值 intgetelement(堆栈s,inti){ 如果(i>1){ s、 pop(); getElement(s,i-1); } 其他的 返回s.top(); } int main(){ 叠煎饼; 煎饼。推(1); 煎饼。推(2); 煎饼。推(3); printf(“%d”,getElement(煎饼,2)); }
救命啊!我的getElement函数返回i处的元素,从堆栈的顶部值开始,值为1 当我运行getElement(2)时,它应该在堆栈上返回2: 3-索引1, 2-索引2和 1-索引3C++ 堆栈函数应该返回指定的元素,而不是返回垃圾值 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
它打印垃圾值。假设它只接受可接受的值(索引在范围内),错误处理是我稍后要做的事情。您缺少一个
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();
}