aboutsummaryrefslogtreecommitdiff
path: root/01_introductory_problems/gray_code_2205.cpp
blob: 4fa8a2da227a2734a7b5dc6dabc39be0d131edb7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <format>

void print(int number, int ndigits) {
	std::cout << std::format("{0:0{1}b}", number, ndigits) << "\n";
}

void print_all(int& start, int digit, int ndigits) {
	if (digit == 0) {
		print(start, ndigits);
	} else {
		print_all(start, digit-1, ndigits);
		start ^= 1 << (digit-1);
		print_all(start, digit-1, ndigits);
	}
}

int main() {
	int n, start{0};
	std::cin >> n;
	print_all(start, n, n);
}

Generated with cgit - Back to sebastiano.tronto.net