minhye11   4년 전

도와주세요!!! 제발 ㅠㅠㅠㅠ 으악

minhye11   4년 전

아 인덱스를 잘못썼군요..

그런데

A_team[index] = 1; 

 B_team[index] = 0; 

 teammaking(A_team, B_team, index + 1, A_members + 1, B_members);

 B_team[index] = 1; 

 A_team[index] = 0; 

 teammaking(A_team, B_team, index + 1, A_members, B_members + 1);

이 부분을 처음에는

A_team[index] = 1; 

 teammaking(A_team, B_team, index + 1, A_members + 1, B_members);

 B_team[index] = 1; 

 teammaking(A_team, B_team, index + 1, A_members, B_members + 1);


이렇게 썼거든요. 근데 오류가...  근데 이미 각 리스트에는 0이 들어있어서 괜찮은 거 아닌가요? 차이점이 궁금합니다.

djm03178   4년 전

탐색을 진행하다보면 한 번은 1로 쓰였다가도 다른 조합에서 다시 0이 되어야 하는 경우도 있겠죠?

minhye11   4년 전

아 조금 잘못썼군요

A_team[index] = 1; 

 teammaking(A_team, B_team, index + 1, A_members + 1, B_members);

A_team[index] = 0;

 B_team[index] = 1; 

 teammaking(A_team, B_team, index + 1, A_members, B_members + 1);

이었습니다. ㅜㅜ 

A는 초기화 시켜주는 것이 맞는데

B_team이 조금 꼬이네요ㅜ

djm03178   4년 전

이대로 놓고 진행하면, 한 번 B_team[index]가 1로 설정된 후 다른 조합해서 0이 된 후 실행되어야 함에도 불구하고 A_team[index]와 B_team[index]가 모두 1로 진행될 수 있습니다.

minhye11   4년 전

감사합니다! ABA나 BAA 이런 식으로 섞여있을 때 오류가 난다는 것은 알겠습니다. 


그런데 아직 이해가 안되는 것이 ... 

B_team[index] = 1; 

 A_team[index] = 0; //함수 바깥에 있는 요 아이들이 

 teammaking(A_team, B_team, index + 1, A_members, B_members + 1) <== 요 함수 안에서 새롭와 호출되는 

             B_team[index] 와 A_team[index] = 0에게 영향을 줄 수 있나요?

뭔가 함수 구조가 머릿속에서 잘 안그려지네요ㅜㅜ


minhye11   4년 전

음 그러니까요

#include using namespace std; 

int main(){

   int index = 1; 

   int ar[10]= {0, };  

   ar[index] = 1; 

   index = 2; 

    cout << ar[2]; 

}

제가 궁금한 것을 비교해보자면(?)

이거의 결과가 사실은 0이지만 1이 나오고 있는 셈과 같지 않나...하는 겁니다.

minhye11   4년 전

아 글은 지우지 않을게요 혹시 저같이 헷갈려 하실 분 있으실까봐...ㅋㅋㅋㅋ

배열은 재귀함수 쓸 때 함수 값에 대입이 되는 것이 아니고 

참조자처럼 그 배열 자체를 계속 바꾸어준다고 합니다..ㅋㅋㅋㅋ

그래서 배열을 변수로 받는 재귀함수에서는 초기화가 매우매우매우 중요합니다요.

댓글을 작성하려면 로그인해야 합니다.