怎样在过程中调用过程 pascal

2025-12-16 22:14:44
推荐回答(2个)
回答1:

procedure fun(a:integer);从这开始是函数的定义
const b=10; 从这开始是函数体
begin
a:=a+1;
write(a);
if aa:=a+1;
write(a);
end; 函数定义到这为止
begin;从这开始是主程序
n:=0;
fun(n);
end.;主程序到这为止
程序执行过程如下:
首先执行主过程
begin
n:=0;
fun(n);
end.
此时n=0
然后调用函数fun(0),即执行下列函数体,入口时a的初值为0,即实参n的值。
const b=10;
begin
a:=a+1;
write(a);
if aa:=a+1;
write(a);
end;
则b=10
a=0+1=1
此时将a的值1输出
然后判断a和b的关系,此时1<10成立,则再执行调用函数fun(1 div 2),即再次执行下列函数体,此时入口a的值为0,即1 div 2取整
const b=10;
begin
a:=a+1;
write(a);
if aa:=a+1;
write(a);
end;
重复此过程,直到a
总之,每次调用时需要注意参数的传递,即用实参的当然值代替函数定义中的形参了(即函数定义中的a:integer),然后对函数从头开始执行。主程序调用fun(n)时,实参为n;以后递归调用fun()时,实参为a div 2。

回答2:

自己调用自己叫做递归。
每次调用后过程中的那个a都是局部变量,修改只影响当前过程。
可以当成有很多个fun过程,一个调用另外一个。不用考虑无限调用,那样的话系统会报错的。