第二章作业
1. 运用递归的思想
function a=fib(n) %生成长度为n的斐波那契数列
if n==1
a=1;
elseif n==2
a=[1 1];
else
b=fib(n-1);
a=[b,b(end-1)+b(end)]; %此程序的亮点
end %注意调用时放入work中,例如在指令窗口中输入fib(10)便可得
2.
程序1用递归调用
function f=cantor(ax,ay,bx,by) %定义一个函数cantor
c=0.005;d=0.005; %C为画出的最小的线段的最小长度,d为两条线段之间的距离。
if (bx-ax)>c %如果线段的长度大于C,就继续画曲线。
x=[ax,bx];y=[ay,by]; %画图的范围
hold on;
plot(x,y,'LineWidth',2);
hold off; %用X ,Y画直线,刷新图形界面
cx=ax+(bx-ax)/3; %坐标变换关系
cy=ay-d; %cx,cy,dx,dy分别为中间段的左端和右端坐标。
dx=bx-(bx-ax)/3;
dy=by-d;
ay=ay-d;
by=by-d;
cantor(ax,ay,cx,cy); %再次调用cantor函数
cantor(dx,dy,bx,by); %再次调用cantor函数
end %注意调用时放入work中,例如在指令窗口中输入cantor(1,4,4,4)
%程序2自相似的思想
clear all
u=[0,i];
subplot(3,3,1);
plot(u)
axis([-0.5,0.5,0,1])
for k=1:7
m=u/3;
uuu=[m,m+i*2/3];
subplot(3,3,k+1)
for j=1:2^(k+1)-1 %每次线段数1、3、7、15、31
if mod(j,2)==0;