Cómo crear funciones recursivas en matlab

Existen muchas técnicas de programación en MATLAB elegantes, pero ninguno es tan elegante como la función recursiva. Se crea una función que sigue llamando a sí mismo hasta se cumple una condición, y luego la función ofrece una respuesta basada en los resultados de todas esas llamadas. Este proceso de la función que se hace llamar varias veces se conoce como recursividad, y una función que implementa se trata de una función recursiva.

El ejemplo más común de recurrencia es el cálculo factorial (n!), Donde norte es un número positivo. (El cálculo de un medio factoriales multiplicando el número por cada número por debajo en la jerarquía. Por ejemplo, 4! Es igual a 4 * 3 * 2 * 1 o 24.)

La mayoría de los ejemplos que muestran cómo crear una función recursiva en realidad no demuestran cómo funciona el proceso. Los siguientes pasos le ayudan a crear una función recursiva que no demuestran cómo funciona el proceso.

Video: funciones – matLab (funcion factorial no recursiva)

  1. Haga clic en la flecha situada debajo de la entrada Nuevo en la pestaña Inicio del menú de MATLAB y seleccione la función de la lista que aparece.

    Aparecerá la ventana Editor.

  2. Cambio output_args a consecuencia de ello.

    Video: ¿Cómo definir funciones recursivas en 3 pasos?

    La función devuelve un resultado para cada ciclo precedente de la llamada.

  3. Cambiar el nombre de la función de Intitulado a Factorial1.

    El nombre de la función primaria debe coincidir con el nombre del archivo.

  4. Cambio input_args a Valor, Nivel.

    los Valor recibida es siempre uno menos que la persona que llama recibe anterior. los Nivel demuestra cómo Valor está cambiando con el tiempo.

  5. Escriba el siguiente código en la función entre el comentario y el fin palabra clave.

    Si nargin lt; 2Level = 1-ENDIF Valor gt; 1fprintf ( `Valor =% d Nivel =% dn`, Valor, nivel) -resultado = Factorial1 (Value - 1, Nivel + 1) * Valor-disp ([ `Resultado =`, num2str (Resultado)]) - elsefprintf ( `Valor =% d Nivel =% dn`, Valor, nivel) -resultado = 1-disp ([ `Resultado =`, num2str (Resultado)]) - end

    En este ejemplo se hace uso de un argumento opcional. La primera vez que la función se llama, Nivel No tendrá un valor, por lo que la aplicación asigna automáticamente un valor de 1.

    El código rompe la tarea de multiplicación en pedazos. Por ejemplo, cuando Valor es 4, el código tiene que multiplicar por 3 * 2 * 1. La parte 3 * 2 * 1 de la imagen se define por la llamada a Factorial1 (Valor - 1, Nivel + 1).

    Durante el siguiente paso, Valor es ahora 3. Para obtener el resultado adecuado, el código debe multiplicar este nuevo valor de 2 x 1. Por lo tanto, siempre y cuando Valor es mayor que 1 (donde un resultado real es posible), el ciclo debe continuar.

    Una función recursiva debe tener siempre un punto final - una condición en la que no va a llamar a sí mismo de nuevo. En este caso, el punto final es el más cláusula. Cuando Valor es finalmente menor que 1, Resultado se le asigna un valor de 1 y simplemente devuelve, sin llamar Factorial1 () de nuevo. En este punto, el ciclo de llamadas se desenrolla y cada uno de los retornos de nivel, uno a la vez, hasta que se alcance una respuesta final.

    Tenga en cuenta que este ejemplo se utiliza una nueva función, fprintf (), para mostrar en pantalla la información. los fprintf () función acepta una especificación de formato como su primera entrada. En este caso, la especificación dice a imprimir la cadena valor =, seguido por la información que se encuentra en Valor, entonces nivel =, seguido por la información que se encuentra en Nivel.

    los %re en la especificación de formato dice fprintf () para imprimir un valor entero. Tu usas fprintf () como reemplazo de disp () cuando el formato de salida empieza a ser más compleja. Darse cuenta de disp () requiere el uso de la num2str () función para convertir el valor numérico de Resultado a una cadena con el fin de imprimirlo.

  6. Clic en Guardar.

    Ves Seleccionar un archivo de cuadro de diálogo Guardar como. Observe que el campo Nombre de archivo tiene el nombre de archivo correcto para usted ingresó.

  7. Clic en Guardar.

    El archivo de función se guarda en disco.

  8. Tipo Factorial1 (4) y pulse Intro en la ventana de comandos.

    Usted ve el resultado siguiente:

    Valor = 4 Nivel = 1Value = 3 Nivel = 2Value = 2 Nivel = 3Value = 1 Nivel = 4Result = 1Resultado = 2Result = 6Result = 24ans = 24

    Tenga en cuenta que toda la Valor y Nivel salidas son lo primero. La función debe seguir llamando a sí mismo hasta Valor 1. Cuando alcanza Valor no llegar a 1, se ve la primera Resultado salida. Por supuesto, Resultado También es 1. Observe cómo se desenrolla la recursividad. El siguiente Resultado es 2 * 1, a continuación, 3 * 2 * 1, y finalmente 4 * 3 * 2 * 1.

Ahora que tiene una mejor idea de cómo funciona la recursividad, mira la versión reducida.

función [Resultado] = Factorial2 (Valor)% Factorial2 - Calcula el valor de n% emite el valor factorial de la entrada number.if Valor! gt; 1Resultado = Factorial2 (Valor - 1) * Valor-elseResult = 1-endend

La versión final es mucho más pequeña, pero no emitirá ninguna información útil para decirle cómo funciona. Por supuesto, esta versión se ejecutará mucho más rápido, también.

Artículos Relacionados