Recursiva relacionado Torre de Hanoi

      Hablando recientemente entre la recursividad no intencional, que se encuentra casi olvidado, por lo que la idea de terminar la siguiente, va a hacerse con una nota, o cada vez que volver a pensar, muy cansado

problemas recursivos, tal vez la comprensión de los estudiantes pueden ser capaces de explicar en una frase claramente, los estudiantes no entienden cómo decir que no hay manera de entender!


El concepto básico de la recursividad:

Programa que se llama se llama un conocimientos de programación recursivas,
es una función que llama a sí mismo. En su definición de una función que se llama una manera de forma directa o indirecta,
por lo general es un problema grande y complejo en un problema similar con la escala original problemas menores que resolver,

Se puede reducir enormemente la cantidad de código que la capacidad recursiva finita conjunto infinito de declaraciones para definir el objeto.

De hecho, llame a su propia!

Internet es una vívida metáfora para decir:
se abre la puerta y vio la casa también hay una puerta.
Usted se acercó y encontró las manos de la llave puede abrirlo, se abrió la puerta y se encontró también hay una puerta, se abre para continuar.
Después de varias veces, se abre la puerta y se encontró sólo una casa, sin puerta.

A continuación, se empieza a dar marcha atrás, cada uno nuevo a una casa, se cuenten de nuevo, se dirigió a la entrada, puede utilizarla para responder al final se pone la llave para abrir un par de puertas.


Recursivos tres elementos:
1, una condición de terminación recursiva clara; (sin puerta)
2, da un enfoque recursivo cuando la terminación; (cada uno en una puerta cuando el hacer algo o no hacer nada, para volver )

3, se extrajo la lógica repetitiva, reducción problema. (Con una llave para abrir la puerta para ir)


Ejemplos recursiva: 1 + 2 + 3 ... + n =?

público principal static void (String [] args) {
System.out.println (Addition (4).);
}
/ **
* 1 + ... + n-2 3 = +?.
* si el orden de adición se ha añadido a partir de una n, para encontrar la suma del tiempo n es el número de
* @ param I
* @return
* /
public static int suma (I int) {
si (i> 0) {
volver adición (I - 1). + I; // (con una llave abrir la puerta en)


cuando} else {// inferior a 1 (condición de terminación)
return 0; // devuelve cero (cuando el enfoque de la terminación recursiva)
}


}

El siguiente es un diagrama de flujo de una rutina


Torre de Hanoi realización
de alusiones Hanoi:
Centro de la Benares Mundial (en el norte de la India) templo santo,
una aguja placa de bronce pegado tres gemas. Dios hindú Brahma en el momento de la creación del mundo,
en el que una aguja de abajo hacia arriba para poner en el descendente de la pieza 64 de oro, que se llama la Torre de Hanoi.
De día o de noche, siempre hay un monje en estas piezas de oro se mueven de acuerdo con las siguientes reglas: sólo un movimiento, no importa en la que las agujas, las plaquetas deben ser grandes arriba.
Los monjes predijeron que cuando todas las piezas se ponen de oro de Brahma que la aguja se movió a otro tiempo en un alfiler,
el mundo va a destruir en un trueno, el Vaticano y torres, templos y también los seres perecerán juntos


para resolver el problema clave, haciendo caso omiso de los detalles pequeños, grandes pasos de enfoque:
una la columna "total de n-1" se mueve a los discos por medio de unidad de disco B C, un gran procedimiento completo
de una columna de la restante "en n" discos se trasladó directamente a C placa, terminando un gran proceso de

"Total n-1" th disco por el disco A se mueve a la columna B C, y un gran proceso completo


Implementado en el código es:


void Main (args String []) public static {
String = "A";
Cadena B = "B";
Cadena C = "C";
int i = 3;
hanoi (i, A, B, C);
System.out.println (numcount);
}
/ **
 * Hanoi
 * /
public static void Hanoi (int i, Cadena A, B cadena, cadena C) {
numcount ++;
si (i == 1) {
System.out.println ( "从" + A + "拿出"+ i +"移动到" + C);
} else {
hanoi (i-1, A, C, B);
System.out.println ( "从" + A + "拿出"+ i +"移动到" + C);
hanoi (i-1, B, A, C);
} }




Por C a A ( "común" n-1 TH) a B
columna original -> auxiliar columna
C se convierte en el secundario, para que en el segundo lugar, se convierte en un objetivo B;
Hanoi (1-I, A, C, B. );


B por el a ( "común" n-1) -ésimo movimiento para C
pluralidad: pilar auxiliar -> columna de destino
a es un secundario, de modo que en la segunda posición, la variable de destino C;
. Hanoi (1-I, B, A, C);

El siguiente es un diagrama de flujo HANOR recursiva:





Publicado 13 artículos originales · ganado elogios 1 · vistas 1500

Supongo que te gusta

Origin blog.csdn.net/gaoyang426/article/details/80678027
Recomendado
Clasificación