티스토리 뷰

VS-02분반수업

VSP02(2022-03-16)

choimyeongheon 2022. 3. 23. 22:57

14번 팩토리얼 문제를 풀며 추가적으로 작성했던 피보나치 함수의 코드이다.


[1].피보나치 수열의 n항까지의 합

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("정수 하나를 입력하세요: ");
            int n = int.Parse(Console.ReadLine());

            Console.WriteLine("결과: {0}", Fibo(n));
        }

        private static int Fibo(int n)
        {
            if (n == 1 || n == 2)
                return 1;
            return Fibo(n - 1) + Fibo(n - 2);
        }
    }
}

피보나치 수열을 계산하는 Fibo재귀함수를 설정하여 n항의 값을 구하는 코드이다.

private static int Fibo(int n)
        {
            if (n == 1 || n == 2)
                return 1;
            return Fibo(n - 1) + Fibo(n - 2);
        }

Fibo함수를 도식화하면 위와같이 그려진다.

n을 계속 (-)하여 1이나 2을 만들어 전부 리턴하는 방식이다.

추정 시간복잡도는 N^2 정도로 볼 수 있다. 

순서는 1,1,2,3,5,8,13,21,34,55 이다.


[2].피보나치 수열의 n항까지의 수들 전부 출력하기

n항까지의 수를 for문을 사용하여 전부 출력하는 코드이다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("정수 하나를 입력하세요: ");
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine("1항부터 {0}항까지: {1}", n, Fibo(n));
            for (int i = 1; i <= n; i++)
                Console.Write(Fibo(i) + " ");
            Console.WriteLine(" ");

        }

        private static int Fibo(int n)
        {
            if (n == 1 || n == 2)
                return 1;
            else
                return Fibo(n - 1) + Fibo(n - 2);
        }
    }
}

N이 입력되면 N항의 Fibo값을 출력해준 뒤 

다음줄에 N항까지의 값들을 빈칸으로 구분하여 출력해준다.

for (int i = 1; i <= n; i++)
     Console.Write(Fibo(i) + " ");

for문을 돌릴 때 마다 Fibo함수를 호출하여 계산한 뒤 출력해주었다.

                                                                                    ---------결과---------

'VS-02분반수업' 카테고리의 다른 글

VSP02(22-03-30)  (0) 2022.04.06
VSP02(2022-03-23)  (0) 2022.03.31
VSP02(2022-03-18)  (0) 2022.03.22
VSP02(2022-03-04)  (0) 2022.03.06
VSP02(2022-03-02)  (0) 2022.03.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
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
글 보관함