๋ฐ˜๊ฐ€์›Œ์š”! ํ—ˆ๋ธŒ์ž…๋‹ˆ๋‹ค!

์ €๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ํ˜„๋Œ€ ์—ฐ๊ธˆ์ˆ ์‚ฌ๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ๋Š๋‚€ ์ ๋“ค๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด/์ด๋ชจ์ €๋ชจ

[c์–ธ์–ด]ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ํ•จ์ˆ˜, for ๋ฐ˜๋ณต๋ฌธ ์œผ๋กœ ํ’€์–ด๋ณด๊ธฐ

mmin.h 2020. 4. 24. 13:35

์•ˆ๋…•ํ•˜์„ธ์š” modernAlchemist ์˜ H ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ ํ’€์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์ด๋ž€ F0โ€‹=0, F1โ€‹=1, Fn+2โ€‹=Fn+1โ€‹+Fnโ€‹ ์ด๋‹ค. ์ด๋•Œ ์ดˆํ•ญ๊ณผ ๊ทธ ๋‹ค์Œ ํ•ญ์„ 0๊ณผ 1์ด ์•„๋‹Œ ์ˆซ์ž 

๋‘๊ฐœ๋ฅผ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฃจ์นด์Šค ์ˆ˜์—ด์ด ๋˜๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด 16๋ฒˆ์งธ ํ•ญ๊นŒ์ง€๋งŒ ๋‚˜์—ดํ•ด ๋ณด์ž๋ฉด 

(0), 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 ์ด๋œ๋‹ค. 

 

int fibo(int n) {
	int result;

	if (n == 0) {
		result = 0;
	}
	else if (n == 1) {
		result = 1;
	}
	else {
		result = fibo(n - 1) + fibo(n - 2);
	}

	return result;
}

์žฌ๊ท€ ํ•จ์ˆ˜์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„์„ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. 

๋งŒ์•ฝ ์ด๊ฒŒ ์–ด๋ ต๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ๋„ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

	int fn_2 = 0, fn_1 = 1, fn;
	int start = 2, index;

	if (n == 0) {
		return 0;
	}
	else if (n == 1) {
		return 1;
	}
	else {
		for (index = 2; index <= n; index++) {
			fn = fn_1 + fn_2;
			fn_2 = fn_1;
			fn_1 = fn;
		}
	}

ํ•ด๋‹น ์‹์„ main ํ•จ์ˆ˜์— ํ‘œํ˜„ํ•ด๋ณธ๋‹ค๋ฉด 

//์žฌ๊ท€์ ์ธ ์ •์˜ ํ”ผ๋ณด๋‚˜์น˜ ์ˆœ์—ด 
// fnI = fn-1 + fn-2
//f0 = 0
//f1 = 1

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
int fibo(int n);
int forfibo(int n);

int main(void) {
	int result = 0;
	result = fibo(10);
	printf("10๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด =%d", result);

	printf("\n");

	for (int i = 10; i < 11; i++) {
		result = forfibo(i);
		printf("%d", result);
	}

	return 0;
}

// n >= 2 
int forfibo(int n) {
	//fn = fn-1 + fn-2 
	// n	f0 + f1 -> f2
	//		f1 + f2 -> f3 
	//		f2 + f3 -> f4 

	int fn_2 = 0, fn_1 = 1, fn;
	int start = 2, index;

	if (n == 0) {
		return 0;
	}
	else if (n == 1) {
		return 1;
	}
	else {
		for (index = 2; index <= n; index++) {
			fn = fn_1 + fn_2;
			fn_2 = fn_1;
			fn_1 = fn;
		}
	}

	return fn;
}

int fibo(int n) {
	int result;

	if (n == 0) {
		result = 0;
	}
	else if (n == 1) {
		result = 1;
	}
	else {
		result = fibo(n - 1) + fibo(n - 2);
	}

	return result;
}