Thuật toán sinh dãy nhị phân trong pascal

Lập trình Pascal

Đây là một ví dụ về cách viết thuật toán sinh dãy nhị phân bằng Pascal:

program binarySequence;

const
  n = 5; // Số lượng bit trong dãy nhị phân

var
  i, j: integer;
  binary: array[1..n] of integer;

procedure printBinarySequence;
var
  k: integer;
begin
  for k := 1 to n do
    write(binary[k]);
  writeln;
end;

procedure generateBinarySequence(pos: integer);
begin
  if pos > n then // Đã tạo đủ số bit trong dãy
    printBinarySequence
  else begin
    binary[pos] := 0; // Gán giá trị 0 cho bit ở vị trí pos
    generateBinarySequence(pos + 1); // Tạo dãy nhị phân với bit tiếp theo
    binary[pos] := 1; // Gán giá trị 1 cho bit ở vị trí pos
    generateBinarySequence(pos + 1); // Tạo dãy nhị phân với bit tiếp theo
  end;
end;

begin
  generateBinarySequence(1);
end.

Trong đó, n là số lượng bit trong dãy nhị phân, binary là mảng chứa dãy nhị phân, printBinarySequence là thủ tục in ra dãy nhị phân hiện tại và generateBinarySequence là thủ tục tạo dãy nhị phân bằng đệ quy.

Cụ thể, thủ tục generateBinarySequence sẽ tạo dãy nhị phân bằng cách lần lượt gán giá trị 0 và 1 cho các bit ở vị trí từ 1 đến n. Nếu đã tạo đủ n bit, thủ tục sẽ in ra dãy nhị phân hiện tại. Nếu chưa đủ, thủ tục sẽ tiếp tục đệ quy để tạo dãy nhị phân với bit tiếp theo.

Ví dụ kết quả khi chạy chương trình trên với n = 3:

000
001
010
011
100
101
110
111

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *