Difference between r1.3 and the current
@@ -12,25 +12,177 @@
* 재귀함수
= 실습 =
* 값을 입력받아 해당 값의 factorial을 구하는 프로그램을 작성
=== 김영은 ===
=== 김영은 ===
= 후기 =
= 실습 =
=== 김영은 ===
{{{
#include <stdio.h>
int main()
{
int n;
while (1)//무한반복
{
printf("몇 factorial의 값을 구하시겠습니까?\n");
scanf("%d", &n);
if (n == -1)
break;
else if (n < -1)
continue;
else
printf("%d! = %d\n", n, factorial(n));
}
}
int factorial(int n)//int main과 다른 함수
{
if (n == 0)
return 1;
else
return n*factorial(n - 1);
}
}}}
=== 김상렬 ==={{{
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int n, result;
while (1) {
printf("몇 factorial 값 n please : ");
scanf("%d", &n);
if (n == -1) {
break;
}
else if (n < -1) {
continue;
}
else {
result = fact(n);
printf("%d\n", result);
}
}
}
int fact(int n) {
if (n == 0 ){
return 1;
}
else {
return n * fact(n - 1);
}
}
}}}
=== 최다인 ==={{{
#include <stdio.h>
int fact (int n);
= 과제 =
int main () {
int n;
while (1) {
printf("몇 factorial의 값을 구하시겠습니까? : ");
scanf("%d", &n);
if (n == -1) { break; }
else if (n < -1) {
printf("잘못된 입력값입니다. 양수를 입력해주세요.\n");
continue;
}
else {
printf("%d! : %d\n", n, fact(n));
}
}
return 0;
}
int fact (int n) {
if (n == 0) { return 1; }
else { return n * fact(n - 1); }
}
}}}
= 과제 =
* 하노이의 탑=== 김영은 ===
{{{
#include <stdio.h>
// 밑에서 선언할 때 프로토타입 사용
void hanoi(int n, char src, char dest, char aux);
int main() {
int n;
char src = 'A', dest = 'B', aux = 'C';
scanf("%d", &n);
hanoi(n, src, dest, aux);
return 0;
}
void hanoi(int n, char src, char dest, char aux) {
//return값이 필요없을 때 void 사용
if (n == 1)
{
printf("%c에서 %c로 원반이동\n", src, dest);
return;
}
hanoi(n - 1, src, aux, dest);
hanoi(1, src, dest, aux);
hanoi(n - 1, aux, dest, src);
}
}}}
=== 김상렬 ====== 최다인 ===
{{{
#include<stdio.h>
int hanoi(int n, int In, int Fin)
{
static int count = 0;
int Mid = 6-In-Fin;
if(n==1){
printf("%d --> %d\n", In, Fin);
count+=1;
}
else{
hanoi(n-1,In, Mid);
hanoi(1, In, Fin);
hanoi(n-1, Mid, Fin);
}
return count;
}
int main(void){
int disk, fcount;//
printf("원판수 입력: ");
scanf("%d", &disk);
fcount = hanoi(disk, 1,3);
printf("총 이동 수는 : %d\n", fcount);
return 0;
}
//helped by zeropage
}}}
= 후기 =
2.1. 김영은 ¶
#include <stdio.h> int main() { int n; while (1)//무한반복 { printf("몇 factorial의 값을 구하시겠습니까?\n"); scanf("%d", &n); if (n == -1) break; else if (n < -1) continue; else printf("%d! = %d\n", n, factorial(n)); } } int factorial(int n)//int main과 다른 함수 { if (n == 0) return 1; else return n*factorial(n - 1); }
2.2. 김상렬 ¶
#include<stdio.h> #pragma warning(disable:4996) int main(void) { int n, result; while (1) { printf("몇 factorial 값 n please : "); scanf("%d", &n); if (n == -1) { break; } else if (n < -1) { continue; } else { result = fact(n); printf("%d\n", result); } } } int fact(int n) { if (n == 0 ){ return 1; } else { return n * fact(n - 1); } }
2.3. 최다인 ¶
#include <stdio.h> int fact (int n); int main () { int n; while (1) { printf("몇 factorial의 값을 구하시겠습니까? : "); scanf("%d", &n); if (n == -1) { break; } else if (n < -1) { printf("잘못된 입력값입니다. 양수를 입력해주세요.\n"); continue; } else { printf("%d! : %d\n", n, fact(n)); } } return 0; } int fact (int n) { if (n == 0) { return 1; } else { return n * fact(n - 1); } }
3.1. 김영은 ¶
#include <stdio.h> // 밑에서 선언할 때 프로토타입 사용 void hanoi(int n, char src, char dest, char aux); int main() { int n; char src = 'A', dest = 'B', aux = 'C'; scanf("%d", &n); hanoi(n, src, dest, aux); return 0; } void hanoi(int n, char src, char dest, char aux) { //return값이 필요없을 때 void 사용 if (n == 1) { printf("%c에서 %c로 원반이동\n", src, dest); return; } hanoi(n - 1, src, aux, dest); hanoi(1, src, dest, aux); hanoi(n - 1, aux, dest, src); }
3.2. 김상렬 ¶
#include<stdio.h> int hanoi(int n, int In, int Fin) { static int count = 0; int Mid = 6-In-Fin; if(n==1){ printf("%d --> %d\n", In, Fin); count+=1; } else{ hanoi(n-1,In, Mid); hanoi(1, In, Fin); hanoi(n-1, Mid, Fin); } return count; } int main(void){ int disk, fcount;// printf("원판수 입력: "); scanf("%d", &disk); fcount = hanoi(disk, 1,3); printf("총 이동 수는 : %d\n", fcount); return 0; } //helped by zeropage