2015-01-24 4 views
0

내가 직접이 형식으로 결과를 출력 할 수 있도록이 명령 "FIB (12)"를 사용하여 fib.exe를 실행하려고했다 : http://pastebin.com/ytR92i8f피보나치 밖으로 인쇄 문제 ++

을하지만 내 코드는 컴파일과, 예를 들어, 프로그램을 테스트하기 위해 12를 사용한다면, 어떤 숫자도 읽지 않고이 명령 "fib xx"에 결과를 표시 할 수 없지만 프로그램을 실행하고 다음 줄에 원하는 번호를 입력 한 다음 결과를 출력하십시오 ...

아래 링크를 참조 용으로 main.cpp에 연결했습니다.

MAIN.CPP : http://pastebin.com/fhUAkNQR

main.c를 그래서 난 단지 그것을 작동 얻기 위해 하나 개의 기능을 사용할 수 있습니다 수정할 수 없기 때문에. 지금 당장 나는 올바른 결과를 얻었습니다.

void fibonacci(int max) 
{ 

do 
{ 
    std::cin >> max; 
} 
while(max < 2 && max > 46); 

std::cout << "   Fibonacci  Fibonacci" << std::endl; 
std::cout << " N   number   quotient" << std::endl; 
std::cout << "-------------------------------------" << std::endl; 
std::cout << " 0    0     N/A" << std::endl; 
std::cout << " 1    1     N/A" << std::endl; 

int count = max; 
int fib1 = 0, fib2 = 1; 

for (int i = 2; i <= count; i++) 
{ 
    int next = fib1 + fib2; 

    // Add statements to print here... 
    std::cout << std::setw(2) << i; 
    std::cout << std::setw(14) << next; 
    std::cout << std::setw(21) << std::setprecision(17) << std::showpoint; 
    std::cout << static_cast<double>(next)/fib2 << std::endl; 
    std::cout.unsetf(std::ios_base::showpoint); 

    fib1 = fib2; 
    fib2 = next; 
} 


return; 

}

+0

'while'루프 조건을 설명 할 수 있습니까? – juanchopanza

+0

입력 번호가 2보다 크고 46보다 작 으면 끝나야합니까? – TommyLan

+0

아니요 그게 당신이 가진 것이 아닙니다. "입력 번호가 * 2보다 작고 * 46보다 큰 * 동안"끝내십시오 "시도하십시오. 이제 나는 필즈 메달 수상자가 아니지만 그 조건을 만족시키는 정수는 생각할 수 없습니다. – juanchopanza

답변

0

은 여기 예. 피보나치와 같은 문제는 재귀를 다루는 것이 좋습니다. 난 당신이 재귀의 일종을 사용하려고하지만 정말

int fibonacci(int x) 
{ 
    if (x == 0) 
     return 0; 

    if (x == 1) 
     return 1; 

    return fibonacci(x-1)+fib(x-2); 
} 

을 작동하지 않습니다 당신의 할 일에 루프 동안 볼이 주요 단지 X를 공급하고 즐길에서 기본적으로 사용자가 입력 한 모든 작업을 수행합니다. 재귀는 어려운 개념이지만 일단 아이디어를 얻은 후에는 매우 효율적으로 수행 할 수 있지만 내 생각에는 상당히 제한적입니다.