Algoritmo recursivo para el proceso de aprendizaje de Xiaojie

El algoritmo recursivo es simplemente: una función se llama a sí misma.
Resuelve el problema dividiéndolo repetidamente en subproblemas similares.
No hay una diferencia esencial entre la recursividad y la llamada ordinaria, todas llamando a una función desde una función, pero esta función es en sí misma. Las llamadas a funciones se implementan a través de la pila. Cada aplicación tiene una cierta cantidad de memoria cuando se ejecuta. La pila se usa específicamente para llamadas a funciones, es su llamada a funciones, la pila se extenderá una capa. Estirar esta capa almacena los parámetros formales, las variables locales y la dirección de retorno de esta llamada de función. Cuando finaliza la llamada a la función, el valor de retorno de la llamada a la función también se almacenará en la parte superior de la pila.
Entonces, ¿de qué sirve la recursividad en la programación? Luego hay demasiados usos, estamos divididos principalmente en tres categorías:
Replace Reemplazar múltiples ciclos.
El problema se definió originalmente en una forma recursiva.
Un problema que se puede resolver descomponiendo repetidamente el problema en subproblemas similares.
………………

Las dos condiciones necesarias para la recursividad
1. Existen restricciones: cuando se cumple esta condición, la recursión no continuará. Esta condición puede ser múltiple.
2. Después de cada llamada recursiva, se acerca cada vez más a esta restricción.

1.
Descripción de problemas de la Torre Hanuo : En la antigüedad, había una torre de ventiladores. Había tres A, B y C en la torre. Había 64 placas en la placa A. Las placas eran de diferentes tamaños, con las grandes en la parte inferior y las pequeñas en la parte superior. Un monje quiere mover estas 64 placas del Bloque A al Bloque C. Solo se puede mover una placa a la vez, y durante el movimiento, las placas de las tres placas siempre mantienen la placa grande hacia abajo y la placa pequeña hacia arriba. El bloque B se puede usar en el proceso de movimiento, lo que requiere la salida de pasos de movimiento.
La idea básica es: primero colocar las placas N-1 en el Bloque B, luego mover la placa restante más grande al Bloque C, y luego mover las placas N-1 en el Bloque B al Bloque C.

#include <iostream>
using namespace std;
void Hanoi(int n,char src,char mid,char dest)
{
	if(n == 1){  //只有一个盘子 ,只需移动一次 
		cout << src << "->" << dest << endl;
		return;
	} 
	Hanoi(n-1,src,dest,mid);  //先将n-1个盘子从scr移动到mid
	cout << src << "->" << dest << endl;  //再将一个盘子从src移动到dest 
	Hanoi(n-1,mid,src,dest);  //最后把n-1的盘子从mid移动到dest
	return; 
 } 
 
int main()
{
	int n;
	cin >> n;  //输入盘子数目 
	Hanoi(n,'A','B','C'); 
	return 0;
}

Resultado de la operación:

4
A->B
A->C
B->C
A->B
C->A
C->B
A->B
A->C
B->C
B->A
C->A
B->C
A->B
A->C
B->C

Porque si hay 64 placas, la salida es enorme, así que aquí hay cuatro placas.

2. Encuentra n! Función recursiva

#include <stdio.h>

int Factorial(int n)
{
	if(n == 0)
		return 1;
	else
		return n * Factorial(n - 1);
 } 
 
int main()
{
	int a = Factorial(5);
	printf("%d",a);
	return 0;
}

运行结果:

120
10 artículos originales publicados · Me gusta0 · Visitas 56

Supongo que te gusta

Origin blog.csdn.net/z55947810/article/details/105582760
Recomendado
Clasificación