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
它打印垃圾值。假设它只接受可接受的值(索引在边界内),错误处理是我稍后会做的。
答案 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();
}