2014-10-14 2 views
-4

이 코드를 작성했으며 예상대로 출력되지 않습니다. 이 함수는 음수를 재귀 적으로 반환합니다. 그러나 그것이되어야하는 것을 되돌려주지는 않습니다.네거티브를 계산하는 방법은 무엇입니까?

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 
+3

당신은 심지어 함수를 호출하지 않습니다. – juanchopanza

+0

죄송합니다. 여기에 작성하지 않았습니다. – user4032883

+3

다음을 읽어보십시오 : http://sscce.org/ 그리고 질문을 업데이트하십시오. 제목을 좀 더 기술적 인 것으로 바꾸는 것도 좋습니다. 당신이 가진 것은이 사이트의 거의 모든 질문을 기술 할 수 있습니다. –

답변

1

각 순환 호출은 결과를 인쇄합니다. 그냥 메인에 인쇄 명령을 이동해야합니다

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 
+0

main에 cout 문을 쓰지 않고도이 작업을 수행 할 수있는 또 다른 방법이 있습니까? – user4032883

2

가 출력 내가 기대 정확히 것입니다.

디스플레이

cout<<count<<endl; 

호출 위치에서 스택에 음수의 수를 나타낸다.

현재 재귀에 대한 출력을하기 전에 재귀 호출을하기 때문에 가장 안쪽의 재귀에 대해 먼저 호출됩니다. 그냥 출력 5를 원하는 경우

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

, 당신은 초기 호출

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

에서 반환 된 결과를 인쇄 recursive_x()에서 출력을 제거 할 수 있습니다.

+0

그럼이 문장을 어디에서 호출해야합니까? – user4032883

+0

@ user4032883 성명을 실행하지 마십시오. 함수를 호출합니다. 반환하면 뭔가 그것을 저장하고 싶습니다. 'c = recursive_x (mystack)'을 실행 한 다음'c'를 출력하여 원하는지 확인하십시오. – taocp

+0

그것을 보여주기 위해 내 대답이 업데이트되었습니다. –

관련 문제