검색어 입력폼

순환 알고리즘

저작시기 2006.01 |등록일 2006.12.12 한글파일한글 (hwp) | 7페이지 | 가격 1,500원

소개글

순환 알고리즘
여러 개의 함수로 구성된 프로그램에서 함수는 다른 함수를 호출할 수 있다. 때로는 함수가 자기 자신을 호출하기도 하는데 이것을 순환호출이라고 부른다. 함수가 다른 함수를 부르고, 그 함수가 다시 처음 호출한 함수를 부를 수도 있다. 이것도 역시 순환 호출의 일종으로 간접 순환 호출이라고 한다. 순환 호출을 이용하여 주어진 문제보다 “크기가 작은 문제”를 풀어서 원래 문제를 해결하는 방식으로 알고리즘을 설계할 수 있다. 순환 호출에서 종료 조건은 반드시 필요하다. 호출을 무한정 계속 반복할 수는 없기 때문이다. 순환 호출을 사용하여 프로그래밍할 때 이 점을 실수하기 쉬우므로 주의하여야 한다.

목차

순환 알고리즘
Factorial 계산
수열의 합
거듭제곱 계산
하노이 탑
순열 나열하기
피보나치 수열

본문내용

순환 알고리즘
여러 개의 함수로 구성된 프로그램에서 함수는 다른 함수를 호출할 수 있다. 때로는 함수가 자기 자신을 호출하기도 하는데 이것을 순환호출이라고 부른다. 함수가 다른 함수를 부르고, 그 함수가 다시 처음 호출한 함수를 부를 수도 있다. 이것도 역시 순환 호출의 일종으로 간접 순환 호출이라고 한다. 순환 호출을 이용하여 주어진 문제보다 “크기가 작은 문제”를 풀어서 원래 문제를 해결하는 방식으로 알고리즘을 설계할 수 있다. 순환 호출에서 종료 조건은 반드시 필요하다. 호출을 무한정 계속 반복할 수는 없기 때문이다. 순환 호출을 사용하여 프로그래밍할 때 이 점을 실수하기 쉬우므로 주의하여야 한다.
또 하나 주의할 것은 크기가 더 큰 문제로 순환 호출을 하여서는 안 된다는 것이다. 더 큰 문제로 순환 호출을 하면 호출이 무한히 반복될 것이다.

Factorial 계산
양의 정수 에 대해서 을 계산하라는 문제이다. 이라고 생각할 수 있지만, 이라고 생각할 수 있다. 을 계산할 때 먼저 크기가 작은 문제인 을 순환 호출을 이용하여 풀고 그 값에 을 곱하면 된다. 이 일 때는 위 식으로 계산할 수 없으므로 을 복귀시킨다. 이것이 종료 조건이다.
unsigned long Factorial(unsigned n) {
if (n == 1) return 1;
else return n * Factorial(n-1);
}
이라는 점에 착안하여 다음과 같이 알고리즘을 작성하였다. 이 알고리즘에서 잘못된 점은 무엇일까?
unsigned long Factorial(unsigned n) {
if (n == 1) return 1;
else return Factorial(n+1) / (n+1);
다운로드 맨위로