반복되는 제귀함수를 하나 더 살펴보자.
제귀함수를 사용하는 것 중에는 피보나치 수열이 있다. 이를 제귀함수로 바꾸어보자.
피보나치 수열이란, 0 ,1 ,1 , 2, 3, 5, 8, 13 이런식으로 전 수와 더해가며 나아가는 숫자 인데,
0, 1, 0+1, 1+1, 1+1+1, 1+1+1+1+1 이런식으로 전 수와 더하는 것을 피보나치 수열 이라고 한다.
이를 한번 코드로 만들어보자.
피보나치 수열을 출력한 코드이다. 이건 간단하게for문으로 반복시킨 코드이다. 이것을 제귀함수로 반복되게 만들 수 있는데, 밑과 같이 수정 할 수 있다.
이번에는 Array_sort를 찾아보자. 배열정렬인데, 배열을 내림차순, 오름차순으로 정렬해주는 것 을 이야기한다.
한번 알아보자.
배열정렬의 기본원리는 생각보다 엄청 간단한데,
우선 버블정렬을 확인해보자.
46598 이라는 수가 있다고 하면 순서는
46598 |
64598 |
64598 |
64598 |
64598 |
순으로 들어간다.
이번에는 다른 방식으로 선택정렬 이라는걸 알아보자. 43615 라고 할때
43615 |
34615 |
34615 |
13465 |
13456 |
로 들어가게 된다.
차이는 간단한데, 첫번째는 바로 앞 수와 비교하고, 선택정렬은 가장 작은수가 무조건 앞에 들어가게 정렬한다는 것 이다.
무엇이 더 좋은지는 판단하기 힘든데, 이는 둘다 일장일단이 있기 때문이다.
둘다 비슷한 시간이 흐르지만, 입력된 값이 대부분 일정하게 정리되어 있다고 한다면, 첫번째 방법이 더 유용할 것 이고
중구난방으로 정리되어 있다면 두번째 방법이 더 유용할 것 이다.
한번 코드로 구현해보자.
이번에는 2차원 배열을 출력해보자.
2차원 배열을 선언하는것은 매우 쉽다.
int arr[3][5] 라고 입력했다고 가정해보자.
그렇다면 우리는
ㅁㅁㅁㅁㅁ
ㅁㅁㅁㅁㅁ
ㅁㅁㅁㅁㅁ
형태의 배열을 선언한것 과 같다.
여기서 3차원으로 넣는다고 하면,
int arr[3][5][7] 이런식으로 넣으면 된다. 아직까지는 사용하지 않는다.
이 배열에서
ㅁㅁㅁㅁㅁ
ㅁㅁㅁㅁㅁ
ㅁㅁㅁㅇㅁ
이렇게 데이터를 입력한다고 가정해보자. 어찌 입력해야 할까?.
여기 위치는 2행 3열을 접근해야 한다.
순서는 0부터 시작하기 때문에 배열을 출력한다고 하면 이렇게 된다.
0 | 1 | 2 | 3 | 4 | |
0 | ㅁ | ㅁ | ㅁ | ㅁ | ㅁ |
1 | ㅁ | ㅁ | ㅁ | ㅁ | ㅁ |
2 | ㅁ | ㅁ | ㅁ | ㅁ | ㅁ |
위와 같은 형태로 배열의 주소가 정해진다.
행과 열은 형식이 있는데, 기본적으로 2차원배열은 행을 생략해서 적을 수 있다. 예시를보자.
이렇게 작성할 수 있다.
이번에는 각각 선언한 배열을 접근해보자.
1차원배열은 for문 하나만 사용하면 되나, 2차원배열은 2중for문을 사용하여 각각 접근해줄 수 있다. 예시를 보자.
이번에는 전체 행, 열의 사이즈를 측정하고 출력해보자.
전에 사용하였던 sizeof로 나누어주면 쉽게 출력하여 보여줄 수 있다. 각각의 예시를 살펴보자.
'서울게임아카데미 교육과정 6개월 C++ ~ DirectX2D' 카테고리의 다른 글
8일차. 16.Variable_scope 17.memory_structure (0) | 2023.03.15 |
---|---|
7일차 15.재귀함수를 활용한 피보나치, 로또 생성기 만들기, 2차원 배열 만들기, 16.variable_scope (0) | 2023.03.10 |
5일차 11,12.function 13. Array (0) | 2023.03.08 |
4일차 08.RandomNumber(무작위 난수), 09.while, 10.for (0) | 2023.03.03 |
3일차 05. type_casting, 06.if, 07.switch (0) | 2023.03.02 |