Programación General > Visual Basic para principiantes

 Encuentra el error

<< < (2/5) > >>

m0skit0:

--- Cita de: "Begeo" ---no veo que se le introduzca ningún valor a X nunca
--- Fin de la cita ---

Sí se introduce valor a X (supongo que te refieres a Factorial(X)).


--- Código: Text --- N = Factorial(5)  

--- Cita de: "Begeo" ---Factorial, al ser una función privada, no podría llamarse fuera de modFunciones.bas
--- Fin de la cita ---

Sí señor.


--- Cita de: "Begeo" ---hay que usar "modulo.funcion(datosaqui)"
--- Fin de la cita ---

Generalmente no hace falta.

Con lo que quedan 2 errores.  :mellow:

Begeo:
¿Que factorial se llame a sí mismo no sería otro error?  :huh:

Mollense:

--- Cita de: "Begeo" ---¿Que factorial se llame a sí mismo no sería otro error?  :huh:
--- Fin de la cita ---
No, a eso se le llama Recursividad

m0skit0:
Como apunta Mollense, es recursividad. De hecho hay funciones que de forma recursiva se consiguen mejores resultados, como algoritmos de árboles y demás estructuras de datos. Está interesante, échale un vistazo al tema. Te hace ver las cosas de otra manera  :D

Y para aquellos que estén interesados en otras metodologías de programación, me permito indicarles que echen un vistazo a la programación funcional. Yo adoro LISP (aúpa emacs!).  :good:

Jimbenit:
Echale un vistazo a este codigo:

Modulo1. bas


--- Código: Text ---Public Acum As Integer  Function Factorial(X As Integer) As Integer 'El factorial de cero es 1'Esta es la CONDICION de SALIDAIf X - 1 = 0 Then Exit Function  If Acum = 0 Then Acum = 1Acum = X * Acum Factorial = Factorial(X - 1)Factorial = Acum End Function  

y en el form_load
coloca esto



--- Código: Text ---Private Sub Form_Load()Dim N As Integer N = Factorial(6)Print N End Sub  

Y lo correspondiente a tu problema:

1) Como anoto Begeo, Private en un modulo
2) Esta funcion se va al infinito, no hay una condicion de salida para la recursividad (Error de desbordamiento, la funcion se va al infinito negativo)
3) Esta funcion es el procedimiento Factorial de matematicas, pues no hace nada , no multiplica nada (error de metodologia)


Nota:
Hagamos problemas simples ( de esos cotidianos, no los rebuscados!!) , acaso esta seccion del foro no se llama:  Visual Basic para principiantes

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa