给出递归算法的一个例子
递归算法是一种算法思想,主要解决已知序列初始部分的值f(0)~f(k),以及f(n+1)与f(n)~f(m)之间关系,求解f(x)的问题。
其中m-n 小于等于k 。
例如斐波纳契数列问题
已知 f(0) = 0,f(1) = 1, f(n + 1) = f(n - 1) + f(n - 2) (n>=2,n∈N*)
此时可得递归思想书写的算法函数
int f(unsigned int k)
{
if (k == 0)
return 0;
else if (k == 1)
return 1;
else
return f(k - 1) + f(k - 2);
}C语言如何用递归算法求1!+2!+3!+...n!
#include<stdio.h>
float fun(int n)
{
if(n==1) return 1;//如果n=1则直接返回1
return n*fun(n-1);//否则返回n*fun(n-1),以此计算n的阶乘,这条语句就是递归体
}
void main()
{
int i;
float sum=0;
for(i=1;i<=n;i++){
sum+=fun(i); //循环调用,用sum累计
}
printf("sum=%.2f
",sum);
}递归算法的是怎么回事?
和迭代差不多,只是通过定义和调用函数来实现迭代
把事情分解成相同的步骤重复执行直到符合某一条件时结束,再反过来递推到最初的状态,问题就解决了
比如定义(用的是C语言)
int fun(int a)
{
if(a==1) return 1;
else
{
a=a*fun(a-1);
return a;
}
}
在fun里面再定义fun,这个fun都只做一件事,把a的内容和fun(a-1)相乘作为返回值
这里要有个终止条件,即a=1时返回值为1,这样,如果我给最初的fun里的a赋值为5,第一步为5*fun(4),而执行fun(4)的结果为4*fun(3)....直到fun(2)=2*fun(1)即fun(2)=2*1,再把fun(2)代回去,得fun(3)=3*2*1,最后倒推的结果为fun(5)=5*4*3*2*1,即这个递归函数实现了a的阶乘fun(a)=a!
够详细了吧,觉得好的话给我加分吧 ^_^递归算法的例子
c语言中递归的最经典应用是求两个数的最小公约数,代码如下:
int MinDivisor( int m, int n)
{
if(m%n==0)
return n;
else
return MinDivisor(n, m%n);
}c语言递归法
/*先输入n再输入r;
n不要超过30
程序列出所有组合情况,并且计数
样例输入:
4 3
样例输出:
1 2 3
2 2 4
3 3 4
4 3 4
*/
#include<stdio.h>
#define MAXN 31
int res[MAXN];
int N,M,count;
void outres()
{
int i;
count++;
printf("%d",count,res[1]);
for (i=2; i<=M; i++)
printf(" %d",res[i]);
printf("
");
}
bination(int no)
{
int i,k;
if (no>M)
outres();
else
{
k=res[no-1]+1;
for (i=k; i<=N-M+no; i++)
{
res[no]=i;
bination(no+1);
}
}
}
int main()
{
scanf("%d%d",&N,&M);
count = 0;
res[0]=0;
bination(1);
return 0;
}
搬瓦工最新优惠码优惠码:BWH3HYATVBJW,节约6.58%,全场通用!搬瓦工关闭香港 PCCW 机房通知下面提炼一下邮件的关键信息,原文在最后面。香港 CN2 GIA 机房自从 2020 年上线以来,网络性能大幅提升,所有新订单都默认部署在香港 CN2 GIA 机房;目前可以免费迁移到香港 CN2 GIA 机房,在 KiwiVM 控制面板选择 HKHK_8 机房进行迁移即可,迁移会改变 IP...
轻云互联成立于2018年的国人商家,广州轻云互联网络科技有限公司旗下品牌,主要从事VPS、虚拟主机等云计算产品业务,适合建站、新手上车的值得选择,香港三网直连(电信CN2GIA联通移动CN2直连);美国圣何塞(回程三网CN2GIA)线路,所有产品均采用KVM虚拟技术架构,高效售后保障,稳定多年,高性能可用,网络优质,为您的业务保驾护航。官方网站:点击进入广州轻云网络科技有限公司活动规则:用户购买任...
photonvps怎么样?photonvps现在针对旗下美国vps推出半价促销优惠活动,2.5美元/月起,免费10Gbps DDoS防御,Linux系统,机房可选美国洛杉矶、达拉斯、芝加哥、阿什本。以前觉得老牌商家PhotonVPS贵的朋友可以先入手一个月PhotonVPS美国Linux VPS试试了。PhotonVPS允许合法大人内容,支持支付宝、paypal和信用卡,30天退款保证。Photo...
递归法为你推荐
微信红包图片怎么在微信上发发红包才能看的照片ucosiiucosii是什么?里面的OS是指什么?在看正点原子给的stm32f407开发指南的时候看到这个,什么意思?密码设置电脑怎么设置密码实数的定义实数的概念是什么,实数包括0吗?蓝牙开发iOS的蓝牙开发跟Android有什么不同qsv视频格式转换器QSV格式的视频用什么格式转换器可以转换?qsv视频格式转换器手机qsv怎么转换成mp4格式转换器阶乘函数C语言中有计算阶乘的函数吗 不是自己写,,,是那种可以直接调用的函数第五人格抄袭那个模仿第五人格的游戏叫什么什么是fpgaFPGA 图像处理
猫咪永久域名收藏地址 台湾服务器 海外服务器 css样式大全 国外网站代理服务器 html空间 小米数据库 傲盾官网 双12 下载速度测试 中国linux 华为k3 万网主机 宿迁服务器 数据湾 碳云 遨游论坛 网易轻博客 最好的空间日志 腾讯空间登录首页 更多