| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Oscar18457
Registrado: 22 Ago 2007 Mensajes: 18 Ubicación: Chile
| Publicado: 06/10/2007 10:12 am | | | Título: Recursividad |
| long fibonacci(long m) { if(m==0 || m==1) return(1); else return(fibonacci(m-1)+ fibonacci(m-2));
Buenas tardes, muchs dudad he aclarado desde que participo en este foro. Gracias por aquello.
He estado estudiando recursividad, me pueden explicar como se evalua la funcion fibonaci cuando obviamente m !0 y !1. Que pasa con m, la copia se evalua en forma simultanea para ambas partes del return, o primero actua para m-1, si es asi como guarda m para realizar m-2, al usar el debug de TClite solo muestra que m, va decreciendo. _________________ oa |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 3841 Ubicación: Mexico
| Publicado: 06/10/2007 9:58 pm | | | Título: Re: Recursividad |
| | Oscar18457 escribió: | | la copia se evalua en forma simultanea para ambas partes del return |
Cual de las dos expresiones "fibonacci(m - 1)" y "fibonacci(m - 2)" se evalua primero depende del compilador ya que el lenguaje C no especifica el orden de evaluacion de los operandos de una expresion.
La excepcion a esto son los operadores "&&", "||", "," y "? :".
| Oscar18457 escribió: | | o primero actua para m-1, si es asi como guarda m para realizar m-2 |
No se guarda ya que las expresiones "m - 1" y "m - 2" no afectan el valor almacenado en la variable "m".
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
| | Volver arriba | |  | Oscar18457
Registrado: 22 Ago 2007 Mensajes: 18 Ubicación: Chile
| Publicado: 07/10/2007 9:59 am | | | Título: |
| Gracias por la explicacion, recorde que los valores se pasan por valor, por lo tanto simpre tendremos el valor de m. sin embargo para mi sigue siendo un misterio :( , la expresión del return. no lo veo claro. Me confunden la evaluacion de m-1 y despues o no se cuando m-2. Y sin embargo se mueve (Galileo). Es decir funciona Gracias _________________ oa |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |