用Free pascal语言。看下面。

某人上台阶,一步可以走一个台阶,也可以走两个台阶,还可以走三个台阶。问他走到10层台阶,共有多少种不同的走法。要程序。... 某人上台阶,一步可以走一个台阶,也可以走两个台阶,还可以走三个台阶。问他走到10层台阶,共有多少种不同的走法。
要程序。
展开
 我来答
awayings
2008-07-21 · 超过17用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:0
展开全部
递归吧,扩展到n的情况(n当然不能很大).

function count( n:integer): integer;
begin
if n = 3 then
count:= 4
else if n = 2 then
count:= 2
else if n <= 1 then
count:=1
else count := count(n-1) + count(n-2) + count(n-3);
end;
走1级1种方法
走2级2种方法
走3级有(走3级+走2级+走1级)种方法
走n>3级有f(n)种走法.
分:
最后一步走1级则前面有f(n-1)种走法.
最后一步走2级则前面有f(n-2)种走法.
最后一步走3级则前面有f(n-3)种走法.
f(n) = f(n-1)+f(n-2)+f(n-3) (n>3)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
oe350200
2008-07-29
知道答主
回答量:49
采纳率:0%
帮助的人:23.8万
展开全部
这道题我刚做的,不是很简单吗,干嘛要用什么递归、递推啊,直接用3个for循环就能做出来了:
var i,j,k:integer;
begin
for i:=1 to 10 do
for j:=1 to 5 do
for k:=1 to 3 do
if i+j*2+k*3=10 then
writeln(i,j,k);
readln;
end.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
littledlt
2008-07-20 · TA获得超过1719个赞
知道小有建树答主
回答量:1030
采纳率:0%
帮助的人:694万
展开全部
简单的递归题啊!
var n1:longint;
a:array[0..1000]of longint;
function f(n:longint):longint;
begin
if a[n]=0 then begin
if (n=0)or(n=1) then a[n]:=1
else a[n]:=(f(n-1)+f(n-2))mod 10000;
end;
f:=a[n];
end;
begin
n1:=10;
fillchar(a,sizeof(a),0);
writeln(f(n1));
end.

对于这道题来说是递推也是递归
但是请问他上100层楼梯呢?
你认为我俩的程序谁快些?
而且你的程序运行结果还是错的
走1级1种方法
走2级2种方法
走3级有(走2级+走1级)种方法
走4级有(走3级+走2级)种方法
……
自己推吧,你会发现你答案错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kdefgey
2008-07-20 · TA获得超过1282个赞
知道小有建树答主
回答量:339
采纳率:100%
帮助的人:393万
展开全部
递推,不是递归.
a:=0;b:=1;c:=2;d:=4;
for i:=4 to 10 do
begin
a:=b;b:=c;c:=d;d:=a+b+c;
end;
writeln(d);
算法由来:
到第i个台阶的种数=到第i-1个台阶+到第i-2个台阶+到第i-3个台阶数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友95581c4cf
2008-07-20 · TA获得超过372个赞
知道小有建树答主
回答量:1077
采纳率:0%
帮助的人:433万
展开全部
你是要答案还是要程序?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式