none
Algoritmo recursivo que imprima todas las posibles descomposiciones de un número natural

    Pregunta

  • Hola alguna manera de diseñar un algoritmo utilizando recursividad que imprima todas las posibles descomposiciones de un número natural como suma de números menores que él.

    Por ejemplo el 5 
    1+1+1+1+1
    1+1+1+2
    1+1+3
    1+4
    2+2+1
    2+3

    y de igual manera con números mas grandes, como 100,999 etc, es posible? 

    lunes, 12 de septiembre de 2016 3:14

Respuestas

  • Es algo parecido a lo siguiente:

    Sub Descomponer (Numero as Integer)
      For I as Integer = 1 to Numero-1
        Console.Write I & "+"
        Descomponer (Numero - I)
       Console.WriteLine()
      Next
    End Sub

    Énfasis en "parecido a". No se trata de que lo copies exacta y literalmente, sino de que te sirva de inspiración, y te encargues de pulir las pequeñas deficiencias que tiene, como por ejemplo el¨"+" superfluo al final de cada linea.

    martes, 13 de septiembre de 2016 6:51

Todas las respuestas

  • Haz un bucle for que vaya desde 1 a el número a descomponer menos 1. El valor de la variable del bucle (llamémosla "I") sería el primero dígito de la descomposición. Entonces ese I se lo restas al número que estabas descomponiendo, y la diferencia la vuelves a alimentar recursivamente a esa misma subrutina que contenía el bucle inicial.

    Valdrá para números pequeños. No te recomiendo que lo pruebes con 100999 (ya de entrada la primera línea tendrá 100999 unos, y requerirá 100999 reentradas en la subrutina recursiva).

    lunes, 12 de septiembre de 2016 6:51
  • No me refería a ese numero sino a 100 O 999 osea números menores que mil! pero aún asi no logro entender tú idea :/
    martes, 13 de septiembre de 2016 4:26
  • Es algo parecido a lo siguiente:

    Sub Descomponer (Numero as Integer)
      For I as Integer = 1 to Numero-1
        Console.Write I & "+"
        Descomponer (Numero - I)
       Console.WriteLine()
      Next
    End Sub

    Énfasis en "parecido a". No se trata de que lo copies exacta y literalmente, sino de que te sirva de inspiración, y te encargues de pulir las pequeñas deficiencias que tiene, como por ejemplo el¨"+" superfluo al final de cada linea.

    martes, 13 de septiembre de 2016 6:51