Red de conocimiento informático - Conocimientos de programación - La programación debe explicar cada paso.

La programación debe explicar cada paso.

7.5.1 Llamada a función anidada

Llamada a función anidada: llamar a otras funciones en la función llamada se llama llamada a función anidada.

◆ El lenguaje C no puede definir funciones de forma ordenada.

Por ejemplo, la función f2 se llama en la siguiente llamada a la función f1.

flotante f1(int a, int b)

{

f2(a b, a-b);

}

int f2(int x, int y)

{

}

El proceso de llamada se muestra en la Figura 7.2.

El ejemplo 7.10 encuentra los valores de 1k 2k 3k...nk, suponiendo que k es 4 y n es 6.

#Contiene "stdio.h"

void main()

{

int suma, n=6, k = 4 ;

sum=add(k,n);

Printf("Resultado de salida: d ",sum);

}

Add(int a, int b) /*Función: add */

{

int i, s = 0;

for(I = 1 ;ilt= b;i)

s = s potencia (I, a);

Orden de devolución;

}

Potencias (int m, int n) /*Función: Multiplicación*/

{

int j, p = 1;

for(j = 1; j lt= n; j )

p = p * m;

Return (p);

}

Los resultados de la ejecución son de la siguiente manera:

2275

Llamada de función recursiva

Llamada recursiva: llamar directa o indirectamente a la función misma durante el proceso de llamar a una función se denomina llamada recursiva de la función.

Al escribir un programa de llamada recursiva, preste atención a:

(1) Algoritmo del programa recursivo: cómo implementar su recursividad

(2) Condiciones finales; de llamadas recursivas: Evite llamadas recursivas interminables que causen bucles infinitos. Por lo tanto, la llamada recursiva debe ser una llamada recursiva condicional:

Si (condición) llamada recursiva

De lo contrario...

Ejemplo 7.11 La programación utiliza un algoritmo recursivo para encontrar ¡norte! proceso factorial.

Matemáticamente podemos saber: n! = 1 * 2 * 3 * ...* n, podemos obtener:

La condición final de la llamada recursiva:

if( (n==0)|| ( n= =1)) devuelve (1);

de lo contrario devuelve (n * fac(n-1)); /* fac(n-1) encontrado (n-1)! Función*/

El proceso es el siguiente:

Factor entero (entero n)

{

Si (n lt0)printf (" n lt; 0, error de entrada de datos! ”);

else if( (n==0)|| (n==1)) devuelve (1);

else return(n * fac(n-1));

}

void main()

{

int n , y ;

Printf("Ingrese un número entero: ");

scanf("d ", ampn

y = fac(n) ;

printf("d!=d ",n,y);

}

Los resultados de la operación son los siguientes:

Ingrese un número entero: 5↙.

5!=120

El ejemplo 7.12 llama a una función recursiva para cambiar el orden inferior de un número entero a un orden superior, y el orden superior en un orden inferior para formar otro número entero. Por ejemplo, ingresar 1234 da como resultado otro número entero 4321.

#Contiene "stdio.h"

int fun(int n, int m)

{

if (n== 0) Devuelve m;

else devuelve diversión(n/10, m * 10 n 10

}

void main()

;

{

printf("d\n ", divertido(1234, 0));

}