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 )