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ố
Bài tập Pascal – Đệ quy Đệ quy Function hay Procedure gọi lại thân hàm hay thủ tục, TD: Function GiaiThua(k: Integer): LongInt; hàm ñệ quy dùng ñể tính giai thừa số k trả giá trị giai thừa K Function GiaiThua(k: Integer): LongInt; Begin If k = then GiaiThua := Else GiaiThua := GiaiThua(k-1) * k; End; Bài 01 – In giá trị giai thừa mảng chiều ñệ quy Bạn nhập dãy số nguyên tính giai thừa số dãy ñó (Dãy 1, 4, 7, 5, => In 1, 24, 5040, 120, 2) Var A: Array [1 10] of Integer; i, n: Integer; Function GiaiThua(k: Integer): LongInt; Begin If k = then GiaiThua := 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 := to n begin WriteLn('Hay nhap phan tu thu ', i); ReadLn(A[i]); End; {In giá trị giai thừa} For i := to n Write(GiaiThua(A[i]):6); ReadLn; End Biên soạn: Th.s Nguyễn Anh Việt Trang Bài tập Pascal – Đệ quy Bài 02 – In giá trị luỹ thừa phần tử mảng chiều Bạn nhập dãy số nguyên tính luỹ thừa ñệ quy số dãy ñó (Dãy 1, 4, 7, 5, => In 1, 16, 49, 25, 4) Var A: Array [1 10] of Integer; i, n: Integer; Function LuyThua(a, k: Integer): LongInt; Begin If k = 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 := to n begin WriteLn('Hay nhap phan tu thu ', i); ReadLn(A[i]); End; {In giá trị luỹ thừa 2} For i := to n Write(LuyThua(2, A[i]):6); ReadLn; End Procedure tương tự Function, có ñối số giá trị trả TD: Procedure NhanMang(k: Integer); Procedure NhanMang(k: Integer); Begin For i := to n A[i] := A[i] * k; End; Bài 03 – In giá trị nhân phần tử mảng chiều Bạn nhập dãy số nguyên nhân ñôi số dãy ñó (Dãy 1, 4, 7, 5, => In 3, 12, 21, 15, 6) Biên soạn: Th.s Nguyễn Anh Việt Trang Bài tập Pascal – Đệ quy Var A: Array [1 10] of Integer; i, n: Integer; Procedure NhanMang(k: Integer); Begin For i := to n 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 := to n begin WriteLn('Hay nhap phan tu thu ', i); ReadLn(A[i]); End; {Nhân phần tử mảng} NhanMang(3); {In dãy số} For i := to n Write(A[i]:4); End; WriteLn; ReadLn; End Bài 04 – In giá trị nhân phần tử mảng chiều Bạn nhập dãy số nguyên nhân số dãy ñó (Dãy 1, 4, 7, 5, => In 7, 28, 49, 35, 14) Bài 05 – In số siêu nguyên tố có chữ số Bạn tìm số siêu nguyên tố có chữ số Số siêu nguyên tố số nguyên tố bỏ ñi chữ số bên phải số nguyên tố 3137 (3137, 313, 31, ñều số nguyên tố) (In 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 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 False} Var j: Integer; Begin If (k begin If not NguyenTo(k) then begin SieuNguyenTo:= False; Exit; End; k := k div 10; End; End; Begin {In số Siêu nguyên tố có chữ số} For i := 1000 to 9999 If SieuNguyenTo(i) then Begin Write(i:5); Dem := Dem + 1; End; If Dem = then WriteLn('Khong co Sieu so nguyen to nao'); ReadLn; End Biên soạn: Th.s Nguyễn Anh Việt Trang ...Bài tập Pascal – Đệ quy Bài 02 – In giá trị luỹ thừa phần tử mảng chiều Bạn nhập dãy số nguyên tính luỹ thừa ñệ quy số dãy ñó (Dãy 1, 4, 7, 5, => In 1, 16,... End; Bài 03 – In giá trị nhân phần tử mảng chiều Bạn nhập dãy số nguyên nhân ñôi số dãy ñó (Dãy 1, 4, 7, 5, => In 3, 12, 21, 15, 6) Biên soạn: Th.s Nguyễn Anh Việt Trang Bài tập Pascal – Đệ quy Var... 5939 7193 7331 7333 7393) Biên soạn: Th.s Nguyễn Anh Việt Trang 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ó