1. Trang chủ
  2. » Giáo án - Bài giảng

Bài tập Pascal 03 Đệ quy

4 2,9K 81

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 87,26 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài tập và bài giải về Đệ quy trong Pascal: Bài 01 – In ra giá trị giai thừa của mảng 1 chiều bằng đệ 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ài 03 – In ra giá trị nhân 3 của các phần tử trong mảng 1 chiều Bài 04 – In ra giá trị nhân 7 của các phần tử trong mảng 1 chiều Bài 05 – In ra số siêu nguyên tố có 4 chữ số

Trang 1

Đệ 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

Trang 2

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 )

Trang 3

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 )

Trang 4

Var

A: Array [1 10] of Integer;

i, n, Dem: Integer;

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

Ngày đăng: 11/09/2017, 22:03

TỪ KHÓA LIÊN QUAN

w