Generowanie wariacje z powórzeniami liczb 0 i 1 o długości n – poprawa programu

0

Hej, miałam napisać program, który generuje wszelkie wariacje z powórzeniami liczb 0 i 1 o długości n.
N pobieramy od użytkownika.

Mam coś takiego:


#include <iostream>

using namespace std;

#define MAX_LENGTH 32
int number[MAX_LENGTH];

void f(int n, int length) {
	if (n > 0) {
		number[4 - n] = 0;
		f(n - 1, length);
		number[4 - n] = 1;
		f(n - 1, length);
	}
	else {
		for (int i = 0; i < length; i++) {
			printf("%u", number[i]);
		}
		printf("\n");
	}
}

int main() {
	f(4, 3);
	f(4, 4);
	f(4, 5);
	return 0;
}



Działa dla 4 - wypisuje ok.
Ale dla 3 wypisuje po 2 razy, a dla 5 - nie wypisuje wszystkiego, jak to naprawić?

1

Czym jest n, a czym jest length?
edit: Pytam tutaj o różnicę między n, które mówisz, że jest długością pobraną od użytkownika, a zmienną length, która z nazwy powinna przechowywać właśnie długość ciągu. Możemy do tego dojść analizując kod, ale jeśli szukasz pomocy, to fajnie nam to ułatwić...

Jeśli dobrze rozumiem problem: chcesz podawać na wejściu długość ciągu cyfr 0 i 1, a na wyjściu otrzymywać wszystkie kombinacje?

Bardzo przypomina to po prostu liczbę wyrażoną binarnie. Może spróbuj właśnie w ten sposób podejść do problemu?

1 użytkowników online, w tym zalogowanych: 0, gości: 1