Tải bản đầy đủ (.pdf) (4 trang)

Bài tập Pascal 03 Đệ quy

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (87.26 KB, 4 trang )

Bài tập Pascal – Đệ quy
Đệ quy là các Function hay Procedure gọi lại chính nó trong bản thân của hàm hay thủ tục, TD:
Function GiaiThua(k: Integer): LongInt;
là hàm ñệ quy dùng ñể tính giai thừa của một số k và trả về giá trị giai thừa của K
Function GiaiThua(k: Integer): LongInt;
Begin
If k = 1 then GiaiThua := 1
Else GiaiThua := GiaiThua(k-1) * k;
End;

Bài 01 – In ra giá trị giai thừa của mảng 1 chiều bằng ñệ quy
Bạn hãy nhập một dãy số nguyên và tính giai thừa của từng số trong dãy ñó.
(Dãy 1, 4, 7, 5, 2 => In ra 1, 24, 5040, 120, 2)
Var
A: Array [1..10] of Integer;
i, n: Integer;
Function GiaiThua(k: Integer): LongInt;
Begin
If k = 1 then GiaiThua := 1
Else GiaiThua := GiaiThua(k-1) * k;
End;
Begin
WriteLn('Hay nhap so phan tu cua day so');
ReadLn(n);
{Nhập dãy số}
For i := 1 to n do begin
WriteLn('Hay nhap phan tu thu ', i);
ReadLn(A[i]);
End;
{In ra giá trị giai thừa}
For i := 1 to n do


Write(GiaiThua(A[i]):6);
ReadLn;
End.

Biên soạn: Th.s Nguyễn Anh Việt

Trang 1


Bài tập Pascal – Đệ quy
Bài 02 – In ra giá trị luỹ thừa 2 của các phần tử trong mảng 1 chiều
Bạn hãy nhập một dãy số nguyên và tính luỹ thừa 2 bằng ñệ quy của từng số trong dãy ñó.
(Dãy 1, 4, 7, 5, 2 => In ra 1, 16, 49, 25, 4)
Var
A: Array [1..10] of Integer;
i, n: Integer;
Function LuyThua(a, k: Integer): LongInt;
Begin
If k = 1 then LuyThua := a
Else LuyThua := LuyThua(a, k-1) * a;
End;
Begin
WriteLn('Hay nhap so phan tu cua day so');
ReadLn(n);
{Nhập dãy số}
For i := 1 to n do begin
WriteLn('Hay nhap phan tu thu ', i);
ReadLn(A[i]);
End;
{In ra giá trị luỹ thừa 2}

For i := 1 to n do
Write(LuyThua(2, A[i]):6);
ReadLn;
End.

Procedure cũng tương tự như Function, có thể có ñối số nhưng không có giá trị trả về. TD:
Procedure NhanMang(k: Integer);
Procedure NhanMang(k: Integer);
Begin
For i := 1 to n do
A[i] := A[i] * k;
End;

Bài 03 – In ra giá trị nhân 3 của các phần tử trong mảng 1 chiều
Bạn hãy nhập một dãy số nguyên và nhân ñôi từng số trong dãy ñó.
(Dãy 1, 4, 7, 5, 2 => In ra 3, 12, 21, 15, 6)
Biên soạn: Th.s Nguyễn Anh Việt

Trang 2


Bài tập Pascal – Đệ quy

Var
A: Array [1..10] of Integer;
i, n: Integer;
Procedure NhanMang(k: Integer);
Begin
For i := 1 to n do
A[i] := A[i] * k;

End;
Begin
WriteLn('Hay nhap so phan tu cua day so');
ReadLn(n);
{Nhập dãy số}
For i := 1 to n do begin
WriteLn('Hay nhap phan tu thu ', i);
ReadLn(A[i]);
End;
{Nhân 3 các phần tử của mảng}
NhanMang(3);
{In dãy số}
For i := 1 to n do
Write(A[i]:4);
End;
WriteLn;
ReadLn;
End.

Bài 04 – In ra giá trị nhân 7 của các phần tử trong mảng 1 chiều
Bạn hãy nhập một dãy số nguyên và nhân 7 từng số trong dãy ñó.
(Dãy 1, 4, 7, 5, 2 => In ra 7, 28, 49, 35, 14)
Bài 05 – In ra số siêu nguyên tố có 4 chữ số
Bạn hãy tìm các số siêu nguyên tố có 4 chữ số. Số siêu nguyên tố là các số nguyên tố và khi bỏ ñi các
chữ số bên phải thì nó cũng là số nguyên tố như 3137 (3137, 313, 31, 3 ñều là số nguyên tố)
(In ra 2333 2339 2393 2399 2939 3119 3137 3733 3739 3793 3797 5939 7193 7331 7333 7393)

Biên soạn: Th.s Nguyễn Anh Việt

Trang 3



Bài tập Pascal – Đệ quy
Var
A: Array [1..10] of Integer;
i, n, Dem: Integer;
Function NguyenTo(k: Integer): Boolean; {Boolean: Chỉ có True và False}
Var
j: Integer;
Begin
If (k <= 0) or (k = 1) then begin NguyenTo := False; Exit; End;
For j := 2 to Trunc(Sqrt(k)) do
If k mod j = 0 then begin NguyenTo:= False; Exit; End;
NguyenTo := True;
End;
Function SieuNguyenTo(k: Integer): Boolean;
Begin
SieuNguyenTo: = True;
While k > 0 do begin
If not NguyenTo(k) then begin
SieuNguyenTo:= False;
Exit;
End;
k := k div 10;
End;
End;
Begin
{In ra các số Siêu nguyên tố có 4 chữ số}
For i := 1000 to 9999 do
If SieuNguyenTo(i) then Begin Write(i:5); Dem := Dem + 1; End;

If Dem = 0 then WriteLn('Khong co Sieu so nguyen to nao');
ReadLn;
End.

Biên soạn: Th.s Nguyễn Anh Việt

Trang 4



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×