【问题标题】:How to count negatives? [closed]如何计算负数? [关闭]
【发布时间】:2014-10-14 21:42:59
【问题描述】:

我编写了这段代码,但输出没有按预期出现。该函数递归地返回负数。但它并没有返回应有的状态。

size_t recursive_x(stack<int> mystack){
        int count=0;
        if(!mystack.empty()){
            if(mystack.top()<0){
                count+=1;
            }
            mystack.pop();
            count+=recursive_x(mystack);
        }cout<<count<<endl;
        return count;
}
int main(){

    stack<int> mystack;
    mystack.push(9);
    mystack.push(-2);
    mystack.push(-2);
    mystack.push(1);
    mystack.push(-3);
    mystack.push(-1);
    mystack.push(99);
    mystack.push(-1);
    mystack.push(1);
    mystack.push(1);
    recursive_x(mystack);
 }

输出应该是 5,但它是这样来的:

输出:

0
0
1
2
2
3
4
4
5
5
5

【问题讨论】:

  • 你甚至没有调用这个函数。
  • 抱歉忘记写在这里了。
  • 阅读此内容:sscce.org,然后更新您的问题。我还建议将您的标题更改为更具描述性的名称;你所拥有的几乎可以描述这个网站上的每一个问题。

标签: c++ data-structures stack


【解决方案1】:

假设您确实调用了该函数,输出正是我所期望的。

显示器显示堆栈中负数的个数

cout<<count<<endl;

被调用。

它首先被调用用于最内层的递归,因为您在为当前递归执行任何输出之前进行递归调用。

count+=recursive_x(mystack);
    }cout<<count<<endl;

如果您只想要输出 5,您可以打印初始调用返回的结果

int finalCount = recursive_x(mystack);
cout<<finalCount<<endl;

并删除recursive_x()中的输出。

【讨论】:

  • 那么我应该在哪里调用这个语句呢?
  • @user4032883 你从不调用语句。你调用一个函数。如果它返回一些东西并且你想存储它。做c = recursive_x(mystack),然后打印c,看看是不是你想要的。
  • 更新了我的答案以表明这一点。
  • @taocp 没用。
  • Eric J. 我不确定你想说什么?
【解决方案2】:

每次递归调用都会打印结果。 您只需要将打印命令移至主目录:

size_t recursive_x(stack<int> mystack){
        int count=0;
        if(!mystack.empty()){
            if(mystack.top()<0){
                count+=1;
            }
            mystack.pop();
            count+=recursive_x(mystack);
        }
        return count;
}
int main(){

    stack<int> mystack;
    mystack.push(9);
    mystack.push(-2);
    mystack.push(-2);
    mystack.push(1);
    mystack.push(-3);
    mystack.push(-1);
    mystack.push(99);
    mystack.push(-1);
    mystack.push(1);
    mystack.push(1);
    cout<<recursive_x(mystack)<<endl;
 }

输出:

5

【讨论】:

  • 是否有另一种方法可以做到这一点,而无需在 main 中编写 cout 语句。
猜你喜欢
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
相关资源
最近更新 更多