본문 바로가기

Computer Engineering/나프잘

나프잘 파랑 / 9-8번 문제풀이 및 피드백

피드백과 공부 내용

1. 선택구조 작성 후, 선택구조를 하나로 줄일 수 있을 방법이 있을 지 탐색해볼 것. 이번 문젲에서는 초기화를 통해 선택구조없이 피보나치 수열을 작성함.
2. 변수이름은 처음 보는 사람도 이해할 수 있도록 직관적으로 작성하기.


 

1. 문제이해 


2. 분석


3. 설계

 

 

 

4. 검토





5. c구현
//calculateFibonacci.c
/*
파일 명칭 : calculateFibonacci.c
함수 명칭 : main
기 능 : 1부터 50까지 번호를 세며, 앞앞항과 앞항, 피보나치수를 차례로 구한 뒤 번호와 피보나치수를 출력하며, 최종적으로 50번째 피보나치수를 출력한다.
입 력 : 없음
출 력 : 피보나치수
작성 일자 : 2019-11-17
*/
//매크로 영역
#include <stdio.h>

#define MAX 50

//함수 선언
int main(int argc, char* argv);

//함수 정의
int main(int argc, char* argv) {
 //자동 변수 선언
 auto unsigned long long fibonacciNumber = 0;
 auto unsigned int number;
 auto unsigned long long frontOfFrontFibonacci = 0;
 auto unsigned long long frontFibonacci = 1; 

 //1. 제목을 출력한다.
 printf("번호\t\t\t피보나치수\n");
 //2. 번호가 최대값보다 작거나 같을 때 반복한다.
 for (number = 1; number <= MAX; number ++) {
  //2.2. 앞앞항을 구한다.
  frontOfFrontFibonacci = frontFibonacci;
  //2.3. 앞항을 구한다.
  frontFibonacci = fibonacciNumber;
  //2.4. 피보나치수를 구한다.
  fibonacciNumber = frontOfFrontFibonacci + frontFibonacci;
  //2.5. 번호, 피보나치수를 출력한다.
  printf("%d\t\t\t%lld\n", number, fibonacciNumber);
  //2.1. 번호를 센다.
 }
 //3. 피보나치수를 출력한다.
 printf("50항 : %lld\n", fibonacciNumber);
 //4. 끝낸다.
 return 0;
}



6. java 구현
//Main.java
/*
파일 명칭 : Main.java
메소드 명칭 : main
기 능 : 1부터 50까지 번호를 세며, 앞앞항과 앞항, 피보나치수를 차례로 구한 뒤 번호와 피보나치수를 출력하며, 최종적으로 50번째 피보나치수를 출력한다.
입 력 : 없음
출 력 : 피보나치수
작성 일자 : 2019-11-17
*/
//패키지 선언
package calculatefibonacci;

//Main 클래스
public class Main{
    //main 메소드 정의
    public static void main(String[] args){
        //상수 변수 선언
        final int MAX=50;
        //지역 변수 선언
        long fibonacciNumber=0;
        int number;
        long frontOfFrontFibonacci=0;
        long frontFibonacci=1;
        
        //1. 제목을 출력한다.
        System.out.println("번호\t\t\t피보나치수");
        //2. 번호가 최대값보다 작거나 같을 때 반복한다.
        for(number=1; number<=MAX; number++){       
            //2.2. 앞앞항을 구한다.
            frontOfFrontFibonacci=frontFibonacci;
            //2.3. 앞항을 구한다.
            frontFibonacci=fibonacciNumber;
            //2.4. 피보나치수를 구한다.
                fibonacciNumber=frontOfFrontFibonacci+frontFibonacci;          
            //2.5. 번호, 피보나치수를 출력한다.
            System.out.printf("%d\t\t\t%d\n", number, fibonacciNumber);
            //2.1. 번호를 센다.
        }
        //3. 피보나치수를 출력한다.
        System.out.println("50항 : "+fibonacciNumber);
        //4. 끝낸다.
    }
}

 

7. ns 차트