티스토리 뷰
//
// 중복호출을 허용한 경우
#include "stdafx.h"
int count = 0; // 호출횟수 저장용
int fib(int n)
{
count++;
if( n == 1 || n == 2 ) return 1;
return fib(n-1)+fib(n-2);
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
while( 1 )
{
scanf("%d", &n);
if( n == 0 )
break;
count = 0;
printf("fib(%d) = %d\n", n, fib(n));
printf("Total call count = %d\n", count);
}
return 0;
}
실행 결과
// 동적 재귀 호출
#include "stdafx.h"
int count = 0; // 호출횟수 저장용
int fib(int n)
{
// 1. 해를 저장할 배열을 선언한다.
static int f[100];
// 2. 배열에 해가 저장되었는지 검사하고
// 해가 저장되어 있다면 그 값을 반환
if( f[n] )
return f[n];
// 3. 계산된 결과를 반환할 때, 배열에 해를 저장하고 반환
count++;
if( n == 1 || n == 2 )
return f[n] = 1;
return f[n] = fib(n-1)+fib(n-2);
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
while( 1 )
{
scanf("%d", &n);
if( n == 0 )
break;
count = 0;
printf("fib(%d) = %d\n", n, fib(n));
printf("Total call count = %d\n", count);
}
return 0;
}
실행결과
// 동적 비재귀 호출
#include "stdafx.h"
int count = 0; // 호출횟수 저장용
int fib(int n)
{
// 1. 해를 저장할 배열 선언 ( 굳이 staric 아니어도 된다. )
int f[100];
// 2. 초기항 설정
f[0] = 0;
f[1] = 1;
// 3. 반복문을 이용하여 해를 구한다.
for(int i = 2 ; i <= n ; i++)
f[i] = f[i-1] + f[i-2];
return f[n];
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
while( 1 )
{
scanf("%d", &n);
if( n == 0 )
break;
count = 0;
printf("fib(%d) = %d\n", n, fib(n));
printf("Total call count = %d\n", count);
}
return 0;
}
실행결과
- Total
- Today
- Yesterday
- C/C++
- 3분 영어 위클리
- Project Diet
- 젤다의 전설
- 아이폰
- NDS
- oracle
- CNN Student News
- 2011사진공모전
- Wii GAME
- 야생의 숨결
- Free Coupon
- 게시판
- 동물의숲
- NDS GAME LIST
- Spore
- 동유럽
- DLC
- 티스토리달력2010
- jsp
- 가을
- NDSi
- 겨울
- ndsl
- 웃기는 사진
- 티스토리달력2011
- 슈퍼마리오 RPG
- 스포어
- 오라클
- 군대이야기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |