티스토리 뷰
[C언어 소스] 팩토리얼(factorial) 구하는 프로그램 예제 소스
오늘은 C언어 프로그램 소스 중에 팩토리얼(factorial) 값을 구하는 프로그램 예제 소스에 대해서 알아보도록 하겠습니다.
팩토리얼을 구하는 방법은
재귀함수(함수를 여러번 호출하는 방법), 반복문(for, while 등)을 이용하는 방법이 있습니다.
이 두 가지 방법을 알아보도록 하겠습니다.
팩토리얼을 구하는 방법은
재귀함수(함수를 여러번 호출하는 방법), 반복문(for, while 등)을 이용하는 방법이 있습니다.
이 두 가지 방법을 알아보도록 하겠습니다.
1. 재귀함수를 이용해서 팩토리얼을 구하는 방법
먼저 재귀함수를 이용해서 팩토리얼을 구하는 방법에 대해서 알아보도록 하겠습니다.
아래의 소스에서 눈여겨 보셔야 할 부분은 Factorial(int n) 함수 입니다. 재귀함수에 대한 소스를 이해하지 못하시는 분들을 위해 예를 들어 설명을 드리도록 하겠습니다.
재귀함수에 대해서 잘 알고 계신 분들은 바로 아래의 소스를 보시면 됩니다. 이해가 안되시는 분만 제 설명을 들어보시기 바랍니다.
예를 들어 아래와 같은 재귀함수가 있다고 합시다.
void Recurse(int n)
{
if(n>0)
Recurse(n-2);
cout<<n<<" ";
}
좀 감을 잡으셨나요?
흐름에 따라가기만 하면 됩니다^^
그러면 아래의 소스를 보시죠^^
// 팩토리얼(재귀호출) #include <stdio.h> int Factorial(int n); void main() { int number = 0; // Factorial(5)를 호출 // 결과값을 number에 대입 number = Factorial(5); // 결과값 출력 printf("%d\n", number); } // # Function : 팩토리얼 계산 함수(재귀) // 1인 경우 : 1을 반환 // 1이 아닌 경우 : 자기 자신 * Factorial(n-1) int Factorial(int n) { if(n == 1) { return 1; } else { return n * Factorial(n - 1); } }
2. 반복문을 이용해서 팩토리얼 값 구하기
이번에는 반복문을 이용해서 팩토리얼 값을 구해보도록 하겠습니다.
// 반복문 팩토리얼 #include <stdio.h> int Factorial(int n); void main() { int number = 0; // Factorial(5)를 호출 // 결과값을 number에 대입 number = Factorial(5); // 결과값 출력 printf("%d\n", number); } int Factorial(int n) { int i = 0 ; int result = 1; // n부터 1까지 반복 for(i = n; i > 0; i--) { // i값을 계속 곱해서 result에 대입 result *= i; } return result; }
결과값을 확인해 볼까요?
위 두 소스의 결과는 같습니다. 팩토리얼값을 구하는데 있어 재귀함수를 호출해서 값을 구하느냐 아니면 반복문을 이용해서 값을 구하느냐의 방법이 다를 뿐이지요.
그러면 실제로 실행해서 팩토리얼 값을 구해보도록 하겠습니다.
5의 팩토리얼 값은 5x4x3x2x1=120이죠.
결과값으로 120이 나왔네요^^
궁금하신 것이 있다면 댓글로 남겨주세요^^
그러면 실제로 실행해서 팩토리얼 값을 구해보도록 하겠습니다.
5의 팩토리얼 값은 5x4x3x2x1=120이죠.
결과값으로 120이 나왔네요^^
궁금하신 것이 있다면 댓글로 남겨주세요^^
'IT 이야기 > 프로그래밍' 카테고리의 다른 글
[프로그래밍 문제] 비트 이동 프로그램 (0) | 2012.05.05 |
---|---|
[프로그래밍 문제] 재귀함수로 합 구하기 (0) | 2012.05.02 |
[프로그래밍 문제] (0) | 2012.05.02 |
[프로그래밍 문제] 팰린드롬(palindrome) 찾아내기 (0) | 2012.04.24 |
[프로그래밍 문제] 토끼잡기 (0) | 2012.04.24 |
[PHP] include 할 페이지에 get으로 인수 넘기는 방법 (0) | 2012.04.22 |
[C언어] scanf 자체에 공백도 인식되게 하는 방법 (0) | 2012.04.18 |
[C언어 소스] 10진수를 2진수로 변환하는 소스 (4) | 2012.04.17 |
비주얼 스튜디오에서 소스코드 자동 정렬 쉽게 하기 (2) | 2012.04.17 |
[HTML 쉽게 이해하기 강좌] - <meta> 태그에 대해서 (0) | 2012.04.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- W3Schools Online Web Tutorials
- 구차니의 잡동사니 모음
- [IT]블로거팁닷컴
- 비앤아이님의 블로그
- Blog Suspect
- 즐거운하루 blog
- zinicap의 검색엔진 마케팅(SEM)
- 머니야머니야님의 블로그
- [Friend] AtinStory
- [기타배우기]해브원 박스
- [웹표준] SINDB.com
- 해커 C 이야기
- [애드센스] 길라잡이
- 정순봉의 IT SCHOOL
- 씨디맨의 컴퓨터이야기
- 2proo Life Story
- 못된준코의 세상리뷰
- [IT강좌] 정보문화사
- IN 대전
- 에우르트는 나쁜남자 -_-
- 씬의 싱크탱크
- 엔돌슨의 IT이야기
- 진이늘이
- 'Cooltime'의 블로그
- 후이의 Tistory
- Soulstorage
- 앤드&엔드의 블로그
- June Blog
- 노지의 소박한 이야기
- gbWorld
- 인터넷 속 나의 생각
- HarshNix
- ART of WEB
- 녹두장군 - 상상을 현실로
TAG
- 소스코드
- 안드로이드 어플 추천
- MBTI
- JavaScript
- MBTI 자료
- php
- MBTI 검사
- 모토로이
- 예제 소스
- 성공
- C
- It
- 안드로이드
- 프로그래밍
- MBTI 강좌
- HTML
- 리뷰
- 강좌
- 안드로이드 어플
- 강의
- C언어
- 인터넷 익스플로러
- 스마트폰
- MBTI 테스트
- C언어 소스
- 인터넷
- C언어 문제
- 효과음
- 소스
- 프로그래밍 문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함