信息学奥赛中的pascal阅读程序题

来源:百度知道 编辑:UC知道 时间:2024/06/24 14:33:52
program ex304;
var
x,x2:longint;
procedure digit(n,m:longint);
var n2:integer;
begin
if(m>0) then
begin
n2:=n mod 10;
write(n2:2);
if(m>1) then digit(n div 10,m div 10);
n2:=n mod 10;
write(n2:2);
end;
end;
begin
writeln('Input a number:');
readln(x);
x2:=1;
while(x2<x) do x2:=x2*10;
x2:=x2 div 10;
digit(x,x2);
writeln;
end.
输入:9734526
输出:______________________________
我知道结果,但不知运行过程是怎样的,特别是过程的递归问题,请求高手指点

program ex304;
var
x,x2:longint;
procedure digit(n,m:longint); {求数位的过程}
var n2:integer;
begin
if(m>0) then
begin
n2:=n mod 10; {除以10取余}
write(n2:2);
if(m>1) then digit(n div 10,m div 10);{调用过程 digit}
n2:=n mod 10;
write(n2:2);
end;
end;
begin {程序主体部分}
writeln('Input a number:');
readln(x);
x2:=1;
while(x2<x) do x2:=x2*10;
x2:=x2 div 10;
digit(x,x2); );{调用过程 digit}
writeln;
end.

输出
6 2 5 4 3 7 9 9 7 3 4 5 2 6

program ex304;
var
x,x2:longint;
procedure digit(n,m:longint); {求数位的过程}
var n2:integer;
begin
if(m>0) then
begin
n2:=n mod 10; {除以10取余}
write(n2:2);
if(m>1) then digit(n div 10,m div 10);{调用过程 digit}
n2:=n mod 10;
write(n2:2);
end;
end;
begin {程序主体部分}
writeln('Input a number:');
readln(x);
x2:=