2012-11-14 2 views
3

이것은 자체적으로 작동하지만 실제로 반환되는 함수에 관계없이 0을 반환하는 간단한 재귀 palindrome 테스트입니다. 전혀 반환하지 않는 경로가 있기 때문에return true가 C++에서 0을 반환 함

bool pal(int l, int r, char *a) 
{ 
    if(l >= r) 
    { 
     cout << "returning true" << endl; 
     return true; 
    } 

    if(a[l] != a[r]) 
    { 
     cout << "returning false" << endl; 
     return false; 
    } 
    pal(l+1, r-1, a); 
} 
+0

같은 것을 할 수 있는가? – 0x499602D2

+0

어떤 데이터를 사용하고 계십니까? – emartel

답변

8

프로그램이 동작을 보증되지 : 당신이 실제로 않는 작업을 볼 수 있습니다 여기에 내 코드, 난 문 cout을 디버깅 떠났다. 당신은 마지막에 return 문을 추가해야합니다 : pal를 호출하지만 결과를 폐기

return pal(l+1, r-1, a); 
4
pal(l+1, r-1, a); 

. 또한 어떤 경로도 값을 반환하지 않는 상황을 초래합니다 (경고를 확인하십시오!). 원하는 내용은 다음과 같습니다.

return pal(l+1, r-1, a); 
+0

그것은 작동합니다. 정말 고마워. 그것은 우스운 이야기입니다. 저는 수업 중 오래된 노트를보고 있었고,이 정확한 시나리오를 "일반적인 실수"라고 표시했습니다. –

+0

@ user1825211 : 쉬운 실수입니다. –

0

결국 return 문이 필요합니다. 함수가 if 문 내부로 가지 않으면 반환 값이 없기 때문입니다.

은 어떻게 당신이 함수를 호출

return pal(l+1, r-1, a);