본문 바로가기

대학교 1-2/컴프

HW4_2

재귀 함수를 사용하지 않고 다시 프로그램하라. 즉 main함수는 그대로 두고 함수 fibo만 변경하라.

체크 포인트 - 입력을 40으로 하고 실행시켜보라.

lab4_3과 hw4_1의 속도를 비교해보라. 어느것이 빠른가?

- LAB4_3과 HW4_2중 어느것이 프로그램하기 더 쉬운가?

#include int fibo(int n);

int main(void)

{

      int n, idx;

      printf("몇개의 피보나치 수열값을 출력할까요?(3보다 큰 정수):"); 

      scanf("%d", &n);

      for (idx = 0; idx < n; idx++) {

      printf("%d ", fibo(idx));

      if ((idx + 1) % 5 == 0)

      printf("\n");

      }

      printf("\n");

}

int fibo(int n) // 재귀적으로 구현하지 않는다

{

}

 

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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int fibo(int n);
int main(void)
{
    int n, idx;
    printf("몇개의 피보나치 수열값을 출력할까요?(3보다 큰 정수):");
    scanf("%d"&n);
    for (idx = 0; idx < n; idx++)
    {
        printf("%d ", fibo(idx));
        if ((idx + 1) % 5 == 0)
            printf("\n");
    }
    printf("\n");
}
int fibo(int n) // 재귀적으로 구현하지 않는다
{
    int fib1 = 1, fib2 = 1, fib=1;
 
    for (int i = 2; i <= n; i++)
    {
        fib = fib1 + fib2;
        fib1 = fib2;
        fib2 = fib;
    }
 
    return fib;    
}
cs

이거 상당히 어려웠다

그니까 저 main함수의 반복문은 배열처럼 생각하면 좀더 쉽다

예를 들어 피보나치 수열 3번째의 경우 2의 인덱스와 2의 값을 갖는데 그럼 fibo함수의 for문 안으로 들어와서 1+1을 계산하고 fibo를 반환한다

4번째의 경우 3의 인덱스와 3의 값을 갖는데 for안으로 돌아와서 fib1자리에  1이 fib2자리에 2가 들어오니 fib는 3이된다.

'대학교 1-2 > 컴프' 카테고리의 다른 글

HW4_3_0  (0) 2023.10.03
HW4_4  (0) 2023.09.26
HW4_1  (0) 2023.09.26
HW4_3_1  (0) 2023.09.26
HW4_3_0  (0) 2023.09.26