Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

닌자고양이

[C/C++] 피보나치 수열 본문

C C++

[C/C++] 피보나치 수열

닌자고양이 2019. 10. 17. 23:34

n번째 피보나치 수를 구하는 재귀 함수. 직관적이나 실행시간 O(n^2)

int fib(int n)
{
    if (n <= 2)
        return 1;
    else
        return fib(n - 1) + fib(n - 2);
}

void main() 
{
	for (int i = 0; i < 10; i++)
		printf("%d\n", fib(i));	
}

 

 

중복 계산이 일어나지 않도록 루프 방식으로 개선.  실행시간 O(n)

// fib(n) = fib(n-1) + fib(n-2)

int fib(int n)
{
	int f = 0, f1 = 0, f2 = 1;  // f: fib(n), f1: fib(n-1), f2: fib(n-2)

	for (int i = 1; i <= n; i++)
	{
		f = f1 + f2;
		f2 = f1;
		f1 = f;
	}
	return f;
}

void main() 
{
	for (int i = 0; i < 10; i++)
		printf("%d\n", fib(i));	
}

 

Comments