본문 바로가기
카테고리 없음

재귀함수

by ByteBridge 2013. 2. 20.
반응형

#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;
}

반응형