3.7 函数的递归调用

写在前面:作者本人是纯纯的菜鸟,学习的内容来自于 中国大学MOOC 中南大学 《科学计算与MATLAB语言》,欢迎各位大佬或新手在这里和平讨论,如果我有错误请各位不吝赐教,提前感谢各位捧场!


在学习递归调用之前,先回答什么是“嵌套调用”的问题

嵌套调用:顾名思义,当被定义的函数中含有函数时,称为嵌套调用。

递归调用是特殊的嵌套调用,即被定义的函数调用了它本身。

例如:

function f=fact(n)
...
fact(n-1);
...

递归调用的分类:

  • 直接递归调用:定义的函数中含有它本身;
  • 间接递归调用:定义的函数f调用了另一个函数g,而这个函数g又含有调用函数f的命令。

例题1:利用递归函数计算n!

思路:n!=\begin{equation} \left\{ \begin{array}{lr} 1,n=1; & \\ n(n-1),n>1\\ \end{array} \right. \end{equation}

function f=fact(n)
if n<=1
    f=1;
else
    f=fact(n-1);
end

例题2:斐波那契数列:f_1=1,f_2=1;\\ f_n=f_{n-1}+f_{n-2} ,n>2

验证斐波那契数列具有如下性质:f_1^2+f_2^2+\dots+f_n^2=f_n\cdot f_{n+1}

思路:与上题类似

%利用递归调用计算斐波那契数列问题
function f=fib(n)
if n>2
    f=fib(n-1)+fib(n-2);
else
    f=1;
end

%验证斐波那契数列前n项平方和为第n项和第n+1项乘积(取n=20)
F=[];
for k=1:20
    F=[F,fib(k)*fib(k)];
end
a=sum(F)
b=fib(20)*fib(21)


以上就是今天分享的全部内容了,再次感谢各位耐心看到这里!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值