永发信息网

pascal递归过程

答案:2  悬赏:80  手机版
解决时间 2021-01-20 12:40
  • 提问者网友:轮囘Li巡影
  • 2021-01-20 09:15
pascal递归过程
最佳答案
  • 五星知识达人网友:山君与见山
  • 2021-01-20 10:27
var x,s:real;
    n:longint;

procedure p(n:real);
begin
  if(n=1)then
    s:=x/(1+x)
  else begin
    p(n-1);
    s:=x/(n+s);
  end;
end;

begin
  readln(x,n);
  p(n);
  writeln(s:0:6);
end. 刚才没看到用过程,改一下.
追问为什么不把x和s加到procedure的形式参数表里边呢追答没有必要这么做.
事实上,任何函数都可以写成等效的过程,反之亦然:
function (arg1,arg2,arg3...):ret
可以写成:
procedure (arg1,arg2,arg3...; var ret);

但是要合理使用函数和过程的特点才是正道.这里,s其实是一个不断迭代的量,作为参数在意义上不合逻辑.x至始到终都没有任何改变,也没有必要加入参数中去.
全部回答
  • 1楼网友:山有枢
  • 2021-01-20 12:01
递归过程要使用全局变量保存结果,如果你会写递归函数的话,那就不难。追问
这是我写出的程序
不知道哪个地方栈溢出了
这个应该怎么修改啊
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯