最近我开始学习pascal然后我发现了这段代码
function mengkono(s: integer):integer;
begin
if s < 3 then
mengkono := 3*s+1
else
mengkono := mengkono(s-1) + megnkono(s-2);
end;
begin
writeln(mengkono(6));
readln;
end.
困惑我的是这条线
else
mengkono := mengkono(s-1) + mengkono(s-2);
从上面的代码中,它的输出是47.因为输入是6而6大于3所以上面的行是运行的。有人可以向我解释它是如何工作的吗?我还是很困惑。
答案 0 :(得分:1)
该函数是一个递归函数,即它调用自身(困扰你的行)。每次执行该行时,s
略小,最终会低于3,从而停止递归。
答案 1 :(得分:1)
这是一个递归函数。一个调用自身的函数。
如果输入为6,那么首先它会这样做 megnkono:= megnkono(5)+ megnkono(4)
然后你需要cgnlulate megnkono(5)和megnkono(4) 5,它会是 megnkono:= megnkono(4)+ megnkono(3) 然后你需要cgnlulate megnkono(4)和megnkono(3)
等......(输入时注意&lt; 3只是给出直接结果)