Bc# Posted June 8, 2014 Posted June 8, 2014 Mi pregunta es sobre recursividad, para el que no sabe que es esto, es cuando se llama una función a si misma. Ejemplo: i=0 function recursiva() outputChatBox(i) i=i+1 recursiva() end Es parecido como usar un for pero en el script que estoy haciendo la manera mas optima de hacerlo era usando recursividad. Ahora mi pregunta es si llamo a la función infinitamente (como en el ejemplo) ¿Consumirá mas recursos?¿Colapsará en algún momento?
Alexs Posted June 8, 2014 Posted June 8, 2014 Tanto MTA como Lua abortan la ejecución de códigos "infinitos". * viewtopic.php?f=148&t=52868
UserToDelete Posted June 8, 2014 Posted June 8, 2014 En vez de incluir un infinite, incluye un timer con 50 ms, no se "petaria" el server y Lua y MTA no lo aborta i=0 function recursiva() outputChatBox(i) i=i+1 end setTimer(recursiva,50,0)
Alexs Posted June 8, 2014 Posted June 8, 2014 En vez de incluir un infinite, incluye un timer con 50 ms, no se "petaria" el server y Lua y MTA no lo aborta i=0 function recursiva() outputChatBox(i) i=i+1 end setTimer(recursiva,50,0) Los temporizadores son la peor idea en MTA, sobre todo uno "infinito" con tan poco tiempo de retraso.
Bc# Posted June 9, 2014 Author Posted June 9, 2014 En vez de incluir un infinite, incluye un timer con 50 ms, no se "petaria" el server y Lua y MTA no lo aborta i=0 function recursiva() outputChatBox(i) i=i+1 end setTimer(recursiva,50,0) Los temporizadores son la peor idea en MTA, sobre todo uno "infinito" con tan poco tiempo de retraso. Se supone que tengo que hacer un contador que valla variando cada 10 segundos, cuando llegue a cierto valor que vuelva a 0 y se repita el ciclo, pero en estos momentos no se me ocurre como.
Alexs Posted June 9, 2014 Posted June 9, 2014 Se supone que tengo que hacer un contador que valla variando cada 10 segundos, cuando llegue a cierto valor que vuelva a 0 y se repita el ciclo, pero en estos momentos no se me ocurre como. Si puedes hacerlo en client-side, utiliza getTickCounty onClientRendery no un temporizador, en cuanto a un numero que sea alterado ciclicamente, se me ocurre algo así: local limit = 10 local i = 0 function up() i = i+1 > limit and 1 or i+1 return i end for i = 1, 50 do print( up() ) end
Renkon Posted June 9, 2014 Posted June 9, 2014 Un ejempló clásico de Recursividad, el factorial 1! = 1, 2! = 2, 3! = 6, 4! = 24, 5! = 120 function factorial(n) return (n-1) >= 1 and n*factorial(n-1) or false end Es algo así, pero me explic0
Bc# Posted June 10, 2014 Author Posted June 10, 2014 Un ejempló clásico de Recursividad, el factorial1! = 1, 2! = 2, 3! = 6, 4! = 24, 5! = 120 function factorial(n) return (n-1) >= 1 and n*factorial(n-1) or false end Es algo así, pero me explic0 Lo se, es una de las cosas básicas que vi en la universidad, pero mi pregunta era en torno a lo que pasa con lua al usar recursividad.
Recommended Posts