소프트웨어학과 2018106041 정민석

Problem #1

#1-1. 변형 피보나치 수열을 나타내는 흐름도(Flow chart)를 작성하시오.

사본 -1-1.png

#1-2. 변형 피보나치 수열을 순환(재귀)함수를 이용하여 구현하시오.

입력: 제 1항, 제 2항, 제 3항, 구하려는 항의 수(N) 출력: 제 N항

#include <stdio.h>

int a,b,c,n;

int new_fibo(n){
    if(n==1){
        return a;
    }else if(n==2){
        return b;
    }else if(n==3){
        return c;
    }else{
        return new_fibo(n-1)+new_fibo(n-3);
    }
}

int main() {
    scanf("%d %d %d %d",&a,&b,&c,&n);
    int ret=new_fibo(n);
    printf("%d",ret);
    return 0;
}

코드 설명

  1. a,b,c,n을 입력받는다.

  2. new_fibo() 함수 : n==1이면 a를 리턴, n==2이면 b를 리턴, n==3 이면 c를 리턴한다.

    3보다 큰 수에 대해서는 new_fibo(n-1)+new_fibo(n-3)을 재귀적으로 리턴한다.

#1-3. 변형 피보나치 수열을 반복문을 이용하여 구현하시오.

입력: 제 1항, 제 2항, 제 3항, 구하려는 항의 수(N) 출력: 제 N항

#include <stdio.h>

int a,b,c,n;

int main() {
    scanf("%d %d %d %d",&a,&b,&c,&n);
    int ret=0;
    if(n==1){
        ret=a;
    }else if(n==2){
        ret=b;
    }else if(n==3){
        ret=c;
    }else{
        int tmpSum=0;
        for(int i=4; i<=n;i++){
            tmpSum=a+c;
            a=b;
            b=c;
            c=tmpSum;
        }
        ret=tmpSum;
    }
    printf("%d",ret);
		return 0;
}

코드설명

  1. a,b,c,n을 입력받는다.