Maquina virtual
hermenegildotPráctica o problema22 de Octubre de 2020
4.033 Palabras (17 Páginas)141 Visitas
Binario[pic 1]
En si el programa trata de convertir un numero entero a numero binario, lo que se puede ver en el programa es que primero creamos una función recursiva que es la que va a repetirse un número de veces ,dentro de la cual se agrega un if que hará que el numero que escribimos si es igual a uno la recursividad se acaba y en cambio si nuestro número es diferente de uno esta sigue y lo que hará primero este if será llamar a nuestra función recursiva dentro de ella misma, pero ahora nuestra función dividirá a nuestro numero entre dos el cual se irá reduciendo conforme vayamos de nuevo llamando a nuestra función y lo vayamos dividiendo hasta hacerse uno , lo que hará que nuestra función acabe y cuando esto pase en cada función que mandamos a llamar se imprimirá el residuo de ir dividiendo nuestro numero en dos, por orden desde la última que llamamos hasta la primera y la impresión final sería nuestro numero convertido a binario.
[pic 2]
Division
[pic 3]
[pic 4]
Este programa nos habla sobre cómo aplicar recursividad en una división, lo primero que podemos ver es que se crea nuestra función recursiva que se llama división la cual tiene tres variables que debemos de darles valor que en este caso dos se mandan a llamar en el main que serían el divisor (n) y el dividendo (m) y otra es el resultado de la división(x) que se obtiene en nuestra función. Ya que ingresamos las dos variables principales en nuestra función recursiva lo primero que nos parece dentro esta es un if el cual nos indica que si el dividendo es menor que el divisor lo que hace es una impresión del resultado y del residuo indicándonos que ya no se puede dividir más, pero si no se cumpla la condición que está en el if ponemos un else , que es el que se encargara de darnos nuestro resultado y el residuo, lo primero que hace es aumentar nuestra variable (x) que en esta caso le habíamos puesto que valía cero ,así que lo aumentara a uno y después hace una operación en la cual el dividendo se le resta el divisor y el resultado se le asigna al dividendo, ya que se hizo esta operación se manda a llamar a nuestra función recursiva la cual se llama varias veces y se volverán a repetir los mismos procesos mencionados hasta que nuestro dividendo sea menor que nuestro divisor que será nuestro residuo y hará que nuestra función termine, y el número de veces que mandemos llamar a nuestra función recursiva será nuestro resultado, tomando en cuenta que la última función que se repita nos dará lo que buscamos y asi por ultimo nos manda a imprimir el resultado y el residuo de la división como se había mencionado antes.
Factorial[pic 5]
Lo que el programa nos muestra es como obtener el factorial de un numero a través de la recursividad, lo primero que se hace es crear nuestra función recursiva, que en este caso tendrá el nombre de fact, pero para poder usar nuestra función primero tendremos que ingresar el numero al que le queremos sacar su factorial el cual mandaremos imprimir después, pero para poder imprimirlo primero pasa por nuestra función en la que vemos que lo primero que aparece es un if que nos dice que si el numero al que deseamos sacarle el factorial es igual a uno este nos retorna un valor de uno y de lo contrario de que no se cumpla esta llamara a nuestra función a la cual se le restara un uno nuestro número y se volverá a repetir volviéndose cada vez más chico nuestro número que ingresamos hasta que se haga uno y ahí es cuando sale el primer valor del factorial de uno que es uno y a partir de este se empiezan a tomar valor los demás números y así sucesivamente hasta que lleguemos al factorial del número que estábamos buscando apoyándonos de los resultados de nuestras funciones anteriores.
[pic 6]
Fibonnaci
[pic 7]
El programa lo que nos muestra es la serie de Fibonacci dependiendo del número de elementos que nosotros indiquemos, lo primero que se hace en el programa es ingresar cuantos elementos queremos que nos muestre , después de eso aparece un for en el cual se repetirá el número de veces que nosotros le indicamos anteriormente y dentro de este se imprime el número de Fibonacci, pero en la impresión nos aparece una función recursiva a la que llamamos Fibonacci que contiene nuestra variable (i) que nos indica la posición en la que está un número .[pic 8]
Este función lo primero que tiene es un if en el que nos dice que si la posición vale uno el número de Fibonacci será cero, además nos pone otro if que dice que si la posición es dos el número de Fibonacci que va en esa posición es uno, pero si tampoco esta condición se cumple nos retorna una operación que en este caso sería sumar nuestra función recursiva restándole un uno a la posición en la que queremos obtener un valor, con la misma función recursiva pero en esta restándole dos y así es como nos da el resultado de la posición que queremos, sumando el resultado que nos dio en las posiciones de nuestras funciones recursivas anteriores, y así ir imprimiendo en nuestro for uno por uno los valores que tiene cada posición, hasta imprimir todos los elementos que indicamos.
Fibonacci 2
[pic 9]
El programa lo que nos muestra es la serie de Fibonacci que sería lo mismo que el anterior que dependiendo del número de elementos que nosotros indiquemos, lo primero que se hace en el programa es ingresar cuantos elementos queremos que nos muestre , después de eso aparece un for en el cual se repetirá el número de veces que nosotros le indicamos anteriormente y dentro de este se imprime el número de Fibonacci, pero en la impresión nos aparece una función recursiva a la que llamamos Fibonacci que contiene nuestra variable (i) que nos indica la posición en la que está un número . Lo único que cambia es que en la función solo nos muestra una condición que dice que si la posición es uno o dos esta valdrá uno y en este caso ya no nos mostraría la serie de Fibonacci desde cero, sino desde el uno tomando a este en la primera posición.
Lo demás es el mismo procedimiento del ejercicio anterior. Así que si no se cumple la condición puesta esta nos retorna una operación, que en este caso sería sumar nuestra función recursiva restándole un uno a la posición en la que queremos obtener un valor, con la misma función recursiva pero en esta restándole dos y así es como nos da el resultado de la posición que queremos, sumando el resultado que nos dio en las posiciones de nuestras funciones recursivas anteriores, y así ir imprimiendo en nuestro for uno por uno los valores que tiene cada posición, hasta imprimir todos los elementos que indicamos.
[pic 10]
Par e impar
[pic 11]
Lo que nos trata de explicar el programa es como saber si un número es par o impar por medio de la recursividad, lo primero que se ve en el programa es que nos pide que introduzcamos un numero cualquiera y al momento de introducirlo este nos va decir si es par o impar pero para saber esto el if manda a llamar una de nuestra funciones, pero ahora si nos damos cuenta tenemos dos funciones recursivas en la cual si una no cumple la condición esta llama a la otra y si la otra tampoco la cumple esta vuelve a llamar a la anterior y así hasta que una cumpla la condición y la que lo cumpla ese nos indicara si es para o impar en este caso el if nos dice que si la funcion es par me imprima “Numero par” y si esto no es así que diga “Número impar”.
[pic 12]
Pascal[pic 13]
[pic 14]
Este programa nos habla sobre cómo obtener el triángulo de pascal a través de la recursividad, lo primero que se realiza en este programa es introducir el número de renglones que queremos que tenga nuestro triangulo , después ponemos dos ciclo for uno para ver en qué número de filas se va a insertar el dato y el otro ciclo for para ver en que columna se iban a ingresar ese mismo dato, ya que esta dependía del número de posición que el primer for iba y además estos iniciaban desde la posición cero por lo cual iban desde la posición cero hasta el número que indicabas. Dentro de estos for se imprimía los datos pero antes de imprimirlos mandaba a llamar a nuestra función recursiva que se llamaba pascal en la cual esperaba dos valores con los que iba trabajar que era la posición de la fila y la columna. En el primer caso la posición de la fila y la columna eran cero y como en nuestra función decía que cuando las dos variables eran iguales esta retornaba uno, así que ese número lo imprimía y volvíamos de nuevo al primer ciclo for donde ahora este tomaría la posición uno y el otro for la cero y nos volvíamos a ir a nuestra función pero en la primera condición también nos decía que si la posición de las columnas valía cero este retornaba un valor de uno y así que imprimía este valor, y así paso hasta que nos topamos con la posición (2,2) que al momento de que hacia la llamada a nuestra función está ya no cumplía la condición, así que retornaba una operación en la que se sumaban nuestra función recursiva con ella misma, pero lo único que cambiaba era que en el primera llamada de la función a esta se le restaba un uno a la posición de la fila y la columna que queríamos saber y en donde llamábamos ala otra solo se le restaba un uno a la fila y la columna quedaba igual y así que para sacar el valor que tenía esa posición que queríamos era necesario recurrir a los valores de las posiciones anteriores y así seguía el mismo proceso hasta que llenáramos el número de renglones que le habíamos asignado.
...