代码实现
1. 创建递归实现的fibona.m
function F = fibona( n )
%fibona(0)=0
%fibona(1)=1
%fibona(n)=fibona(n-1)+fibona(n-2)
%递归函数
B(1)=1;
B(2)=1;
if(n>2)
for i=3:n
B(i)=fibona(i-1)+B(i-2);
end
end
F=B(end);
end
2. 创建非递归实现的fibona1.m
function F = fibona1( n )
%fibona(0)=0
%fibona(1)=1
%非递归实现
a=1;
b=1;
c=0;
while n>2
c=a+b;
a=b;
b=c;
n=n-1;
end
F = c;
3. 创建脚本绘图
x = [];
timer=[];
x1 = [];
timer1=[];
n=20;
%递归时间统计
for i=1:n
tic
x(i)=fibona(i);
timer(i) = toc;
end
%非递归时间统计
for i =1:n
tic
x1(i)=fibona1(i);
timer1(i)=toc;
end
plot(1:n,timer,1:n,timer1)
xlabel('n值');
ylabel('运行时间(/s)');
title('斐波那契数列递归与非递归运行时间分析');
legend('递归算法','非递归算法');
实验结果
递归与迭代时间分析
网友评论