pascal递归问题,第十六届信息学奥林匹克竞赛普及组阅读程序第三题,为什么第一题答案是1,第二个答案是4

constnum=5;varn:integer;functionr(n:integer):integer;vari:integer;beginifn<=numthenbe... const
num = 5;
var
n: integer;
function r(n : integer) : integer;
var
i : integer;
begin
if n <= num then
begin
r := n;
exit;
end;
for i :=1 to num do
if r(n-i) < 0 then
begin
r:=i;
exit;
end;
r:=-1;
end;
begin
readln(n);
writeln(r(n));
end.
(1)
输入:7
输出:__________(4分)
(2)
输入 16
输出:__________(4分)
展开
 我来答
xyyxiao0007
2012-09-28 · 超过22用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:55.3万
展开全部
递归类型的题最好的解题方法是列表法,所以:
n的值 r的值
1 1 {由于题目说了if n<=num then r:=n 所以前五个的值就出来了}
2 2
3 3
4 4
5 5
6 -1 {从第六个起,就要开始循环了,向前找5个数,如果都不小于1,r(6)就是-1}
7 1 {由于7的前一个值就小于一,所以r(7)就等于1}
8 2
9 3
10 4
11 5
12 -1
13 1
14 2
15 3
16 4
所以答案就是1和4
Serchprogram
2012-09-28 · 超过35用户采纳过TA的回答
知道答主
回答量:154
采纳率:0%
帮助的人:69万
展开全部
输出:1
输出:4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式