ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 재귀함수
    카테고리 없음 2013. 2. 20. 01:53
    반응형

    #include<iostream>

    using namespace std;
    int nFactorial(int n);
    int LoofFactorial(int n);
    int nFibo(int n);
    int LoofFibo(int n);
    int main(void)
    {
    //재귀함수를 이용한 팩토리얼 구하기
    int number = 0;
    number = nFactorial(5);
    cout<<"(재귀함수) 5! ="<<number<<endl;
    //포문을 이용한 팩토리얼 구하기
    int LoofNumber=0;
    LoofNumber=LoofFactorial(5);
    cout<<"(Loof) 5! = "<<LoofNumber<<endl;
    //재귀함수를 이용한 피보나치수열구하기
    int Fnumber = 0;
    cout<<"피보나치 수입력 :";
    cin>>Fnumber;
    for (int i=0;i<Fnumber;i++)
    {
    cout<<nFibo(i)<<" ";
    }
    cout<<endl;
    int LFnumber = 0;
     cout<<"루프를 이용한 피보나치 "<<endl;
     cout<<"피보나치 수입력 : ";
     cin>>LFnumber;
    cout<<LoofFibo(LFnumber)<<endl;
     
    return 0;
    }
    int nFactorial(int n)
    {
    if (n==1)
    {
    return 1;
    }
    else
    {
    return n*nFactorial(n-1);
    }
    }
    int LoofFactorial(int n)
    {
    int result = 1;
    for (int i=n;i>0;i--)
    {
    result*=i;
    }
    return result;
    }

    int nFibo(int n)
    {
    if (n ==0)
    {
    return 0;
    }
    else if(n==1)
    {
    return 1;
    }
    else
    {
    return nFibo(n-1)+nFibo(n-2);
    }
    }
    int LoofFibo(int n)
    {

    int x = 0, y = 1, sum = 0, i;

    if(n < 2)//0과 1일때에는 계산할 필요가 없으므로 리턴시킨다.
    return n;

    for(i=1; i<n; i++)//1부터 n까지 
    {
    cout<<x<<" ";
    sum = x + y;//앞뒤의 수를 더함
    x = y;//x값을 y값으로 변경후-->그전값이 그다음값으로 만든후
    y = sum;//원래의 앞에수는 앞뒤를 더한 수로 증가시킨다.
    }

    return x;
    }

    반응형
Designed by Tistory.