信息技术【只用PASCAL】

来源:百度知道 编辑:UC知道 时间:2024/06/15 07:21:27
数学题:有一头母牛,它每年出生一头小牛,每头小牛从第四年起,每年年初也生一头小母牛。问:在第20年时,牛有多少头?

用pascal中 过程、函数(递归)和for语句做

这是for循环,也就是递推
var
i:integer;
a:array[1..20] of longint;
begin
a[1]:=1;a[2]:=1;a[3]:=1;
for i:=4 to 20 do a[i]:=a[i-1]+a[i-3];
write(a[20]);
end.

用递归是
function fx(i:longint):longint;
begin
if (i=1)or(i=2)or(i=3) then fx:=1
else fx:=fx(i-1)+fx(i-3);
end;
begin
write(fx(20));
end.

var
a:array[1..4] of longint;
i:integer;

begin
a[1]:=1;a[2]:=0;a[3]:=0;a[4]:=0;

for i:=1 to 20 do
begin
a[1]:=a[4]+a[1];
a[4]:=a[3];
a[3]:=a[2];
a[2]:=a[1];
end;

write(a[1]+a[2]+a[3]+a[4]);
end.

好像你这不是原题来的吧,原题好像是有一个小母牛,你这一头是大的还是小的

如果是小的
该是
var
a:array[1..4] of longint;
i:integer;

begin
a[1]:=0;a[2]:=1;a[3]:=0;a[4]:=0;

for i:=2 to 20 do
begin
a[1]:=a[4]+a[1];
a[4]:=a[3];
a[3]:=a[2];
a[2]:=a[1];
end;

wri