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