Asumiré que el orden del conjunto de potencias no importa, y eso no es lo que estás preguntando. Por el contrario, está generando un elemento que no pertenece: [matemáticas] \ left \ {1,0 \ right \} [/ math].
Su cláusula else
no tiene en cuenta n == 1
. Es por eso que {1,0}
en la salida. No debe generar [matemáticas] \ left \ {n, n-1 \ right \} [/ math] cuando n == 1
.
Pero eso apunta a una falla más grande … Este código solo funcionará para conjuntos de potencia de hasta 3. No imprimirá el conjunto de potencia para 4, porque debe tener en cuenta todos los subgrupos de 3 elementos que podrían provenir de [matemáticas] \ left \ {1,2,3,4 \ right \} [/ math].
- ¿Qué tan importante es la teoría de probabilidad clásica para la computación cuántica?
- ¿Cuál es el mejor libro para explorar la profundidad del problema P versus NP?
- Cómo implementar la diferenciación automática en C ++ desde cero
- Algoritmos: ¿Cómo visualizo y resuelvo problemas de retroceso?
- Si una solución correcta a la Hipótesis de Riemann, P = NP, o la Teoría de campo unificada se presentara de forma anónima, ¿cuántas personas podrían ser consideradas sospechosas?
Entonces, aunque mi sugerencia anterior podría permitir que su programa imprima todos los elementos del conjunto de potencia de 3, su código no funcionará para ningún otro caso.
( EDITAR: en una reflexión posterior, eso no es suficiente. Nunca imprime [matemática] \ left \ {3,1 \ right \} [/ math] que nuevamente señala el hecho de que no está recurriendo correctamente.)
(Ah, y hay un pequeño detalle de una coma adicional en su “limpieza” para el bucle que imprime {1,2,3,}
, que es otra pista que su código no escalará …)