본문 바로가기
CODING/C#

피보나치 수열 구하기(C#으로!)

by NOBLESSE 2018. 3. 14.
728x90
반응형

안녕하세요? 오늘은 C#으로 피보나치 수열을 코딩해보고 프로젝트 오일러(http://euler.synap.co.kr/)의 두번째 문제를 풀어보도록 하겠습니다.

-소스코드-

            int x = 0;
            int y = 1;
            int z = 0;
            int sum = 0;

               for(int i = 1; i>=0; i++) // 제한없이 무한대로 반복함.
                {
                    z = x + y; // 피보나치 수열에서 앞 두개 더한 값을 얻음.
                    x = y;  // 두번째수가 첫번째수로 됨.
                    y = z; // 더한값이 두번째 수가됨.
               		Console.WriteLine(z); //수열 확인(단, i>=0으로 했을 시에는 값이 한없이 나와서 테스트 할때엔 i 값을 10정도로 제한하고 사용하길 바람.)
                }

 

재귀함수를 이용하지 않고 초보자도 보기쉽고 직접 코딩할 수 있게끔 해놓았습니다. 소스에 대한 설명은 주석을 참고 하시길 바라며 그래도 이해가 안된다 하시면 댓글로 질문해주시길 바랍니다.

이제는 문제를 풀어보도록 하겠습니다.(문제의 답은 아래로 내리시면 있습니다.)

 

문제 - 피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?

 

 

 

정답

            int x = 0;
            int y = 1;
            int z = 0;
            int sum = 0;

               for(int i = 1; i>=0 && z <=4000000; i++)
               {
               		z = x + y; //z==3
                    x = y; 
                    y = z;
                	if(z % 2 == 0)
                	{
                  		sum += z;
                	}
               }
            Console.WriteLine(sum); // 4백만 이하일때 합

728x90
반응형