본문 바로가기

카테고리 없음

[C++] 피보나치(fibonacci) 수열 출력하기

void fibonacci(int su)
{
	int arr[2] = {0, 1}, i, temp;

	cout << arr[0] << "\t";
	if(su > 1)cout << arr[1] << "\t";
	temp = arr[0] + arr[1];
	arr[0] = arr[1];
	arr[1] = temp;
	for(i = 0; i < su - 2; i++)
	{
		cout << temp << "\t";
		temp = arr[0] + arr[1];
		arr[0] = arr[1];
		arr[1] = temp;
	}
	cout << endl;
}

void main()
{
	int su;

	back:
	cout << "출력할 피보나치 수열의 갯수 : ";
	cin >> su;

	if(su < 1)
	{
		cout << "잘못된 갯수를 입력하셨습니다." << endl;
		goto back;
	}

	fibonacci(su);
}

프로그램 실행화면


출력할 피보나치 수열의 갯수를 입력해주면 해당 갯수만큼 피보나치 수열을 만들어 출력해 주는 함수를 만들어봤다. 피보나치 수열은 처음 0, 1로 시작해서 바로 옆에 있는 숫자와 더한 값이 그 다음 값이 되는 수열이다.


프록램 실행화면을 보면 조금 더 쉽게 이해될 것이다. 0, 1을 더해서 3번째 값이 1이 되는 것이다. 이렇게 해서 계속 숫자의 값이 증가하게 되어있다.


fibonacci() 함수를 보면 알겠지만 처음에는 0, 1을 출력해준다. 이 값은 arr[2]에 저장되어 있다. arr[0] = arr[1];이 되고 arr[1]자리에는 이전에 arr[0], arr[1]의 더한 값을 짛어 넣어주고 계속해서 arr[1]을 출력해 주면 된다.


이것은 for문을 보면 이해될 것이다. 스왑하기 위해서 temp라는 변수를 두었고 temp에 출력해야 하는 값이 들어있다.