递归的一些简单实现(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);
}
}
{
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);
}
}
相关文章推荐
- 回答一下这些游戏帧数有关的问题吗?
- JQuery.validate的使用方法(实例)
- maven之Nexus工具的介绍与安装步骤(四)
- 折半查找的优化版本
- Web前端开发知识点1
- 关于贪心算法
- Lua1.0 脚本初步印象
- Jsoup的使用
- kprobe 内核模块
- CIE-LUV是什么颜色特征
- 理论计算机图形渲染技术是否已经到了没有什么可以研究的地步了?
- 指针与数组
- 把颜色转化成图片-swift
- CSU 1536 bit string reordering
- 前端工程师需要明白的「像素」
- 小米生态链负责人说,小米手环是这样打动用户的
- 关于MongoDB同步延迟问题
- 前端工程师需要明白的「像素」
- HTML5游戏开发引擎,初识CreateJS
- ubuntu下解决字符乱码问题