函数递归调用例子?递归调用的经典例题
其实函数递归调用例子的问题并不复杂,但是又很多的朋友都不太了解递归调用的经典例题,因此呢,今天小编就来为大家分享函数递归调用例子的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
c语言中,什么是函数的递归,能举个例子么
所谓递归,说的简单点,就是函数自己调用自己,然后在某个特定条件下。结束这种自我调用。
如果不给予这个结束条件,就成了无限死循环了。这样这个递归也就毫无意义了。
如下面问题
1 1 2 3 5 8 13 21........n
分析可以看出, i表示第几个数, n表示该数的值
当i= 1时, n= 1;
当i= 2时, n= 1;
当i= 3时 n= i1+ i2;
当i= 4时 n= i2+ i3
所以可以写个函数
int fun(int n)//这里的n代表第几个数
{
if(1== n|| 2== n)//第一个数
{
return 1;
}
else
{
return fun(n- 1)+ fun(n- 2);//这里就是自己调用自己,形成循环自我调用。
}
}
注:以上代码只是用来演示递归,不包含错误校验。
在实际生产过程中。该代码不够健壮。
如此,就完成了递归。你就可以求得第n个数了。
何时考虑使用递归。
当你分析一个问题的时候,发现这个问题,是一个自我循环时,而且这个自我循环到一个给定值,就可以终止的时候,你就快要考虑递归了。
c语言函数的递归调用
这段程序的意思是对传来的参数n,如果n<1,程序会崩溃;如果n>1则没大1,返回就多2,最后必然会执行c=10。比如n=5,则返回的是18((5-1)x2+10=18)
比如说做了5次递归,即n=5;执行的操作如下:
第1次调用(n=5),定义了一个intc;
第2次调用(n=4),定义了一个intc;
第3次调用(n=3),定义了一个intc;
第4次调用(n=2),定义了一个intc;
低5次调用(n=1),定义了一个intc;
n=1时,满足了条件n==1,故此时c=10;
第5次返回,此时第5次定义的c=age(intn)=10;前4次定义的intc没有值,下同
第4次返回,此时第4次定义的c=age(intn)+2=10+2=12
第3次返回,此时第3次定义的c=age(intn)+2=12+2=14
第2次返回,此时第2次定义的c=age(intn)+2=14+2=16
第一次返回,此时第一次定义的c=age(intn)+2=16+2=18。此时按下面的程序b接收了返回值
我觉得你应该注意的是age(intn)本身就代表一个int值,就算没有参数接收也可以参与到运算当中,就像这个例子一样。
程序:
#include<stdio.h>
intage(intn)
{intc;
if(n==1)
c=10;
else
c=age(n-1)+2;
returnc;
}
voidmain()
{
inta=0,b=0;
scanf("%d",&a);
b=age(a);
printf("resultis%d
",b);
}
matlab 递归调用例子
递归公式 Pc,t= 0.88* Pc-1,t+ 0.12* Pc-1,t-1
其中c是自变量,范围(1,201),步长为1,Pc,t为函数值(c,t为P的下标)。且P1,1=0.12, Pc,0=0;当c<t时,Pc,t=0。
程序如下:
function[p]=diguihashu(c,t)
ifnargin==0,
c=1;t=0;
end
ct=[c,t];
action_ct=num2str(ct);
switch(action_ct)
case'11'
p=0.12;
caseaction_ct
temp=str2num(action_ct);
cc=temp(1);tt=temp(2);
iftt==0||cc<tt
p=0;
else
p=0.88*diguihashu(c-1,t)+0.12*diguihashu(c-1,t-1);
end
otherwise,
error('Unkonwnacctionstring!');
end
%测试结果:
>>pct=diguihashu(12,5)
pct=
0.0034
%下面是画图程序:
clear
p=zeros(15,15);
forc=1:15
fort=1:15
p(c,t)=diguihashu(c,t);
end
end
[cc,tt]=meshgrid(1:15,1:15);
surf(cc,tt,p)
xlabel('c')
ylabel('t')
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
函数递归调用例子的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于递归调用的经典例题、函数递归调用例子的信息别忘了在本站进行查找哦。