bool
을 돌려주는 다음의 재귀 함수를 이해할 수 없다.bool을 되 돌리는 재귀 함수
bool p(int a[], int inf, int sup) {
if(sup==inf)
if(a[inf]>0)
return true;
else
return false;
int m=(inf+sup)/2;
bool left=p(a,inf,m);
bool right=p(a,m+1,sup);
return left && right;
}
(INF, SUP)의 모든 요소가 false 다른 긍정적이거나있는 경우는 true를 반환해야하지만 배열의 두 극값에없는 요소를 고려하는 방법을 볼 수 없습니다, 이후 테스트 된 조건은 a[inf]>0
이고 left
에 대한 재귀 동안 inf는 변경되지 않지만 right
에 대한 배열의 오른쪽 부분에서만 값을 가져옵니다.
근본적으로, 그것은 계승 (피보나치와 같은)보다 쉬운 재귀와는 다르기 때문에 여기에서 재귀가 어떻게 작동하는지 이해할 수 없습니다. 기본 경우부터 시작하여 두 번째 단계로 진행하려고했지만 명확하지 않습니다 진행 방법.
누구든지이 경우 재귀를 따르는 방법을 제안 할 수 있습니까?이 함수가 (inf, sup)의 모든 요소가 양수이면 true를 반환하는 방법을 이해할 수 있습니까?
'if (a [inf]> 0) 이 true를 반환하면; else return false;는 불필요하게 자세한 정보입니다. 그냥'return a [inf]> 0;' –
@JesperJuhl 나는이 코드의 작성자가 여기에 없다는 인상을 받는다. 내가 이것을 정확하게 읽는다면. –
재귀에 대한 이상한 예제가 있습니다. 간단한 루프가 확실히이 경우에 더 좋습니다. 다른 예제를 선택하라고 제안합니다. 이러한 이분법의 원칙은 항상 동일합니다. – user463035818