您的位置:首页 > 其它

递归的一些简单实现(c实现)

2015-11-02 20:32 295 查看
int sum(int n)//前n项的和 

{

if(n==0)    
return 0; 
else       
return n+sum(n-1);

}

double Jchen(int n)//n的阶乘 

{

if(n==0)
 return 1
else if(n==1)
 return 1
else
return n*Jchen(n-1);

}

int gcd_iteration(int x,int y)//迭代实现求最大公约数 

{
int r=x%y;
while(r!=0)
{
  x=y;
  y=r;
  r=x%y;

}
return y;

}

 

int gcd_rexusrion(int x,int y)//最大公约数 递归 

{

    if(y==0)
 return x;
else
return gcd(y,x%y);



int gcd_rexusrion(int x,int y)//最大公约数

{
return y==0?x:gcd_rexusrion(y,x%y); 



int gcd_rexusrion(int x,int y)//最大公约数

{
if(x%y==0)
 return y;
else
 return gcd(y,x%y);

}

int fbc(int n)//菲波纳契数列 

{
if(n==0)
 return 1
else if(n==1)
 return 1
else
 return fbc(n-2)+fbc(n-1)

}

int binary_serach(int * a,int key,int start,int end)

{
int mid=(end-start)/2+start;

if(key==*(a+mid))
   return mid;
else if(key>*(a+mid))
   binary_serach(a,key,mid+1,end);

     else if(key<*(a+mid))
   binary_serach(a,key,start,mid-1);
else
  return -1;

}

void printArray(int *a,int start,int end)

{

if(start<end)
{
  cout<<*(a+start);//正着打印
  printArray(a,start++,end);

}
 

}

void printArray(int *a,int start,int end)

{

if(start<end)
{
printArray(a,start++,end);//倒着打印 ++start/start+1
   cout<<*(a+start);
  

}
 

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: