Viết thủ tục để in ra màn hình số đảo ngược của một số nguyên cho trước theo 2 cách: đệ qui và không đệ qui. (Pascal ạ)
2 câu trả lời
Cách 1: Đệ quy
uses crt,math;
var n:longint;
function daonguoc(n,sdn:longint):longint;
begin
if n=0 then exit(sdn);
sdn:=sdn*10+(n mod 10);
exit(daonguoc((n div 10),sdn));
end;
begin
clrscr;
readln(n);
writeln(daonguoc(n,0));
readln;
end.
Cách 2: Không đệ quy
uses crt;
var n,t:longint;
begin
clrscr;
readln(n);
while n<>0 do
begin
t:=t*10+(n mod 10);
n:=n div 10;
end;
writeln(t);
readln;
end.
Đệ quy:
uses crt;
var n:longint;
function dx(n,s:longint):longint;
begin
if n=0 then exit(s);
s:=s*10+n mod 10;
exit(dx((n div 10),s));
end;
begin
clrscr;
readln(n);
write(dx(n,0));
readln;
end.
Không đệ quy:
uses crt;
var n,s:longint;
begin
clrscr;
readln(n);
while n<>0 do
begin
s:=s*10+n mod 10;
n:=n div 10;
end;
write(s);
readln;
end.