피보나치수열 무한자리...[수정] 플밍과제

*계산부분에는 문제가 없었지만 정작 출력부분에서 문제가 있다는
것을 깨달았다.  엉뚱한수가 나와 코딩을 다시 했다. *

  실제 무한자리는 안되지만 -_- 시간만 충분하다면 가능할듯도 싶은.
메모리효율에서는 그렇게 좋은 방법이 아니다.
동적으로 한다면 더 효율적일듯

2009년을 맞아 2009번째 피보나치 수열...
2009 번째 수 : 32113249982681582845238472032097086207406078264369213
828207269738873528372164658136016076243682784102556189454848089889
002054262349680942366466972306698093162490877572473940239488148300
961143305441534826717764033122267283563162956490785858430785050847
615157489167011704773920617812432061755619769908742336741418110524
930071538512879429592076595317350864373346109900208767876564876092
1612656571558458025510084617009128909


[수정한 소스]fibo_call.cpp
[프로그램으로 계산한 결과]fibo.txt
*추가사항*
위의 소스는 내가 대학1학년때 재귀형태로 만든것이다.
재귀형태 외에도 for문으로 구현할수가 있다.(비재귀)
아래는 책에 있는 소스를 약간 변형한것.

#include <iostream.h>

typedef unsigned long int ULONG;

ULONG fib(ULONG position);
int main()
{
    ULONG answer, position;
    cout << "Which position? ";
    cin >> position;
    cout << "\n";

    answer = fib(position);
    cout << answer;

    return 0;
}

ULONG fib(ULONG n)
{
    ULONG m1 = 1, m2 = 1, answer = 2;

    if ( n < 3)
        return 1; // 첫항과 둘째항은 무조건 1이다.

//점화식에 따라 구현된 소스

    for ( n -= 3; n; n--)
    {
        m2 = m1;
        m1 = answer;
        answer = m1 + m2;
    }


    return answer;
}



트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://ndizz.egloos.com/tb/715447 [도움말]

덧글

댓글 입력 영역



현재 읽고 있는 책

경제지식의 힘
수학으로 생각한다

W 위젯