主题:[讨论]急!!!求助高手问题 11点前回答
jsn1993
[专家分:0] 发布于 2006-08-27 10:31:00
高手帮忙啊
有这么一道题:
用1*2的长方形 铺满2*n的长方形 求有多少方法 输入n (用函数 递归做)!!
急 11点前要基本算法
实在不行 给我个规律就好了!!!!!!!!!!!!
回复列表 (共3个回复)
沙发
贺天行宝 [专家分:2300] 发布于 2006-08-27 17:41:00
f[i]=f[i-1]+f[i-2]
板凳
bigchen [专家分:1940] 发布于 2006-10-26 22:55:00
递推法
规律楼上都已经给出了
3 楼
maxumi [专家分:2200] 发布于 2006-10-27 08:49:00
既然要递归, 那么就要考虑一下时间问题了, 优化过的递归程序如下:
program lx;
var
k:array[1..100] of longint;
n:integer;
function ss(a:integer):longint;
var
m,n:longint;
begin
if k[a]<>0 then ss:=k[a] else begin
k[a]:=ss(a-1)+ss(a-2);
ss:=k[a];
end;
end;
begin
fillchar(k,sizeof(k),0);
k[1]:=1;
k[2]:=2;
readln(n);
writeln(ss(n));
end.
程序未经调试, 自己调试一下.
我来回复