递归顾名思义就是程序在执行过程中需要自己调用自己,比较经典递归的是求一个数的阶乘下面是我在MATLA下写的阶乘算法程序,采用了递,你可以体会下
建立controlm的M文件
function y=control(x)
if x==1
y=1;
else
y=xcontrol(x-1);
end
然后在命令窗口中输入
>> control(5)
ans =
120
这样就可以用MATLAB实现递归,主要的还是程序思想,如果思想对了,用程序实现自己的想法那就可以了
/
@author lyon_yao
f(x) =(x-1)f(x-1)
/
public class Test {
public static void main(String[] args) {
Systemoutprintln(f(5));
Systemoutprintln(f(50/2));
}
public static double f(double d){
if(d-1>0){
return (d-1)f(d-1);
}else{
return 1;
}
}
}
你那个π 不知道怎么弄
public static void main(String[] args){
Systemoutprintln("输入n,按回车:");
Scanner s = new Scanner(Systemin);
Integer n = IntegerparseInt(snext());
Integer re = factorial(1, n);
Systemoutprintln(re);
}
public static Integer factorial(Integer a, Integer b){
if(b == 1){
return a b;
}else{
return a b factorial(a, b-1);
}
}
这个最后吐槽一句,用循环一下就解决了,非要用递归,闲得蛋疼
C语言所有递归都可以用非递归算法实现,最典型的就是迭代法,有时比递归更容易理解。至于递归中的形式参数是自动变量,没明白楼主的意思,形参就是形参啊,形参变量也是变量,其内存分配在栈区,随着函数的结束,其内存也会被释放,形参的生命周期与函数生命周期相同哈(同生共死)
#include
void
main()
{
int
i,a[21];
a[1]=1;
a[2]=1;
for(i=3;i<=20;i++)
a[i]=a[i-1]+a[i-2];
for(i=1;i<=20;i++)
{
printf("%12d",a[i]);
if(i%5==0)//这样可以五个打一行
printf("\n");
}
}
这个是前二十个的,你要是想打印他的多少项就直接改下就行了
以上就是关于求用MATLAB如何实现递归计算全部的内容,包括:求用MATLAB如何实现递归计算、java递归算法的程序、用Java编写一个完整的递归程序,实现如下功能:从键盘输入数字n,程序自动计算n!,并输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)