Al dar marcha atrás:
Supongamos que s[ ]
es una matriz donde genera las secuencias que desea imprimir. generate(k)
es una función que toma un parámetro que representa el índice del número que está configurando actualmente, por lo que s[k]
toma todos los valores posibles: si k es 1, s[k]
podría ser cualquier cosa, de L a R. De lo contrario, s[k]
depende del valor en la posición anterior, y puede variar de s[k - 1]
a R, para mantener la secuencia no decreciente. Si k es igual a N + 1, significa que ya generó N números, por lo que simplemente imprime la secuencia generada y luego regresa a las llamadas recursivas anteriores de la función. De lo contrario, si k es mayor que 1, imprima la secuencia generada hasta el momento, porque solicitó todas las secuencias cuya longitud se encuentra entre 1 y N, y luego simplemente continúa generando el número k-ésimo. Si k es 1, significa que no generó ningún número hasta el momento y está comenzando a crear una nueva secuencia en este momento, por eso no debe imprimir la matriz s
.
generar (k)
si k == N + 1 {
imprimir m
regreso
}
de lo contrario si k> 1 {
imprimir m
}
- ¿Alguien ha intentado crear matemáticas donde el conjunto de enteros es el doble de grande que el conjunto de enteros pares?
- Cómo demostrar que [matemáticas] (- 1) ^ {n + 1} = – (- 1) ^ n
- Cómo demostrar algebraicamente que [matemáticas] (2n + 3) ^ 3- (2n-3) ^ 2 [/ matemáticas] es un múltiplo de [matemáticas] 8 [/ matemáticas], para todos los valores enteros positivos de [matemáticas] n [/matemáticas]
- ¿Qué es un primo gaussiano y cómo puedo identificar uno?
- ¿Qué significa x ^ x cuando x no es un número entero?
si k == 1 {
para i de L a R {
conjunto s [1] = i
generar (k + 1);
}
}
más {
para i de s [k – 1] a R {
conjunto s [k] = i
generar (k + 1);
}
}