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.

Câu hỏi trong lớp Xem thêm