Describe 피보나치/조현태 here.
~cpp
#include <iostream>
using namespace std;
int fibonacci1( int prv_answer,int sub_answer, int number )
{
//피보나치를 연산합니다.재귀호출식
if( number!=0)
prv_answer=fibonacci1(sub_answer+prv_answer, prv_answer, number-1 );
return prv_answer;
}
void prin(unsigned int num, unsigned int prv_answer )
{
//그냥 출력
cout << num <<"번째 값은 "<< prv_answer <<"입니다.\n";
}
void fibonacci2( unsigned int prv_answer,unsigned int sub_answer, unsigned int number, int call)
{
//안제귀호출..
unsigned int num=1;
while (number!=0)
{
unsigned int temp=sub_answer;
sub_answer=prv_answer;
prv_answer=temp+sub_answer;
--number;
++num;
if (0==call && number>0)
prin (num, prv_answer);
}
prin (num, prv_answer);
}
void main()
{
//메인함수- 값을 입력받고 출력하는 역활을 합니다.
unsigned int number;
int call;
/*while (1)
{
cin >> number;
//cout << fibonacci1( 1 , 0 , number-1) << "\n";
cout << fibonacci2( 1 , 0 , number-1) << "\n";
}*/
cout << "피보나치 수열을 출력하는 프로그램입니다.\n 몇번째 숫자를 출력하시겠습니까?";
cin >> number;
cout << number <<"번째 숫자까지의 값을 출력하겠습니까?(1.예 2.아니오)";
cin >> call;
fibonacci2( 1 , 0 , number-1, call-1);
}
두번째 꺼는 아직 리펙토링이 되지 않았습니다.^^; 양해해주세요.
이번엔 파이썬으로 ..ㅎㅎ
~cpp
def pibo( n ):
#싸구려 느린연산
if n<2:
return n
return pibo( n-1)+pibo(n-2)
def fibo( number ):
#빠른연산
number=number-1
prv_answer=1
sub_answer=0
while number!=0:
temp=sub_answer
sub_answer=prv_answer
prv_answer=sub_answer+temp
number=number-1
print prv_answer
if __name__ == '__main__':
t= int (raw_input('느린연산 숫자를 입력해주세요>>'))
k=pibo( t )
print k
t= int (raw_input('빠른연산 숫자를 입력해주세요>>'))
fibo( t )