본문 바로가기

자료구조

재귀함수

using System;
using System.Collections.Generic;
using System.Collections;

namespace HelloWorld
{
    class App
    {
        //생성자
        public App()
        {
            Console.WriteLine("App");
            int n = 15;

            int result = Sum(n);
            Console.WriteLine("result1: {0}", result);

            int result2 = SumRecursive(n);
            Console.WriteLine("result2: {0}", result2);

            Gugudan(2, 1);
            Console.WriteLine();
            GugudanReverse(2, 9);
        }

        int SumRecursive(int n)
        {
            int temp = n;
            if (n > 0)
            {
                temp += SumRecursive(n - 1);
            }
            return temp;
        }

        //반복문을 사용해서 1 ~ n 까지의 합을 반환하는 메서드를 정의하고 구현
        //이름 : Sum
        //매개변수 : int n
        //반환타입 : int

        int Sum(int n)
        {
            int temp = 0;

            for (int i = 0; i < n; i++)
            {
                int sum = i + 1;
                temp += sum;
            }
            return temp;
        }

        //구구단의 단수를 입력받아 재귀적으로 다음과 같이 출력되는 메서드를 작성하세요
        //n = 2
        //2 x 1 = 2
        //2 x 2 = 4
        //2 x 3 = 6
        //2 x 4 = 8...
        //2 x 9 = 18...

        void Gugudan(int n, int startNum)
        {
            if (startNum < 10)
            {
                Console.WriteLine("{0} x {1} = {2}", n, startNum, n * startNum);
                Gugudan(n, startNum + 1);
            }
        }

        void GugudanReverse(int n, int startNum)
        {
            if (startNum > 0)
            {
                Console.WriteLine("{0} x {1} = {2}", n, startNum, n * startNum);
                GugudanReverse(n, startNum - 1);
            }
        }
    }
}