¿Las funciones del tipo x ^ 2, x ^ 3, x ^ n se consideran de naturaleza recursiva?

No, una función recursiva debe llamarse a sí misma.

f (x) {return x ^ 2} simplemente devuelve el cuadrado del valor de entrada. Esa es una ecuación no lineal porque la pendiente de la ecuación no es una constante (no es una línea recta cuando se traza en un gráfico). Una función lineal es un “polinomio de grado uno o menos”, y en términos más simples solo significa que f (x, y, z) = ax + by + cz + constante, donde ab y c son constantes. O f (x) = ax + constante, o f (x, y) = ax + por + constante. Etc.

Puede escribir una función recursiva para calcular x ^ 2 si lo desea, pero eso no tiene sentido ya que puede especificar f (x) = x ^ 2 en su computadora. La función recursiva para calcular la potencia de xan sería similar a:

definir la potencia de la función (x, n)
si n == 0 entonces {return 1}
más {return x * power (x, n-1)}

Uno de mis ejemplos favoritos de una función recursiva es la solución al problema de caída de huevos y rascacielos. Si tiene 2 huevos idénticos, que se rompen cuando se caen desde o sobre un piso determinado X. X es desconocido. Tiene un rascacielos de altura Y. Necesita una forma de determinar (independientemente de la suerte) el piso exacto X en el que se rompen los huevos. Solo puede visitar 14 pisos, y si un huevo no se rompe, puede recuperarlo y probar otro piso (esto cuenta como 1 visita solamente, por lo que la recuperación no cuesta nada). El huevo no se daña por caídas que no lo rompen.

La respuesta a las 14 visitas, el caso de 2 huevos es que puedes investigar un rascacielos de 105 pisos. La lógica es que vas al piso 14, y si el huevo se rompe, vuelves a bajar a 1 con tu último huevo e intentas secuencialmente 1, 2, 3, … 13 con tus 13 visitas restantes. Eso garantiza una respuesta. Si el huevo no se rompe a los 14, sube 13 pisos más a 27. Si se rompe, baja a 15 y prueba 15, 16, … 26 con las 12 visitas restantes. Y así. Entonces 14 + 13 +… + 2 + 1 = 105.

¿Qué pasa si tienes 3 huevos y 15 visitas? Si intenta resolverlo, verá que se reduce rápidamente a un problema de 2 huevos y 14 visitas si el primer huevo se rompe en la primera visita. Es complicado calcularlo en su mente, pero una computadora puede hacer esto realmente rápido.

El problema general: ¿cuántos pisos puede tener el rascacielos si tengo N huevos y M visitas?

# define una función, plantas (m, n) que toma 2 entradas. m son visitas, n son huevos.

definir pisos de función (m, n)

si m == 0 entonces {floors_covered = 0}
de lo contrario, si n == 0 entonces {floors_covered = 0}
más {init_value = m
para i = 1: (m-1) {
valor_inicial = valor_inicial + pisos (i, n-1)
}
pisos_cubiertos = valor_inicial}
pisos de retorno cubiertos

¿Observa cómo la función llama a los pisos (i, n-1) dentro del bucle for? Entonces, la función recursiva pisos () llama a pisos (), que luego llama a pisos () … Hay casos particulares en los que los pisos () terminarán sin llamar a los pisos (), y es cuando tienes 0 huevos o 0 visitas.

Puede ejecutar la lógica de las 14 visitas, el caso de 2 huevos con la función: floor (14,2) establecerá init_value en 14 y ejecutará un bucle para i = 1:13, init_value agrega el resultado de floor (i, 1) a sí mismo. Sabemos que con 1 huevo los pisos cubiertos son exactamente m, entonces 14 agregará 1, 2, 3, …, 13 a sí mismo. Eso es 1 + 2 + … + 14 = 105.

Tengo la sensación de que estás confundido entre una definición computacional de “función” y la definición matemática de “función”. Esto me sucedió cuando estaba en la escuela secundaria, cuando trataba de conciliar las funciones en un lenguaje de programación y las funciones en álgebra. Una función en matemáticas es solo una relación de correspondencia, con la calidad de que cada valor posible en los dos conjuntos de valores es único. Eso es todo lo que es. Esta es la razón por la cual la definición de una función matemática es “Por cada x hay exactamente una y “. No hay nada operativo o computacional sobre una función matemática, aunque, por supuesto, puede usarse para el cálculo.

Las funciones matemáticas pueden ser recursivas, pero esto solo significa que son autorreferenciales a la función, y puede haber un cambio de parámetros, dependiendo de las reglas que se pueden configurar para la recursividad.

Una función computacional es un procedimiento que calcula y luego devuelve un valor. Una función computacional recursiva también es autorreferencial para la función. La principal diferencia entre ella y una función matemática es que no hay absolutamente ningún requisito de que haya una relación única entre el valor de entrada y el valor de salida.

Una cosa interesante es en el ámbito de la computación, [matemática] T ^ {2} [/ matemática] puede representar la iteración. En un lenguaje de programación, expresamos un bucle for como:

int x;
para (i = 1; i <10; i ++) {x = i * i;}
En términos matemáticos, aplicados a la computación, podríamos expresar este mismo ciclo computacional como:
[matemáticas] T = \ {i \ leftarrow i + 1; x \ leftarrow i \ cdot i \} [/ math]
[matemáticas] T ^ {10} \ text {, donde i = 1} [/ matemáticas]

Puede parecer recursivo, pero dentro de la programación funcional, esto se vería como iterativo.

Entonces no, [matemáticas] f (x) = x ^ {2}, f (x) = x ^ {3}, f (x, n) = x ^ {n} [/ matemáticas] no son recursivas, ya que no son autorreferenciales para la función. Aplaudo la respuesta de Scott Berry sobre por qué no son lineales.

Pensando en términos matemáticos clásicos, me parece que [math] y = x ^ {2}, y = x ^ {3}, y = x ^ {n} [/ math] son ​​cada uno un caso especial de una función cuadrática , donde a = 1 y b = c = 0 .

Editar: no cambie la pregunta después de que varias personas ya hayan respondido.

Parece que no está claro sobre qué es una función y sobre la diferencia entre recursividad y linealidad.

Una función es un mapeo de un dominio a un codominio. Generalmente se expresa en la forma [matemáticas] f (x) =… [/ matemáticas]

Una función recursiva aparece en su propia definición. Algo así como: [matemáticas] f (x) = … f (…) … [/ matemáticas]

La linealidad es una propiedad de una función, formalmente definida en términos de propiedades como lo hice en mi respuesta a continuación. Informalmente se puede definir como una función cuyo gráfico es una línea recta.

Mi respuesta original:

Técnicamente [matemáticas] x ^ 2 [/ matemáticas] no es una función. [matemáticas] f (x) = x ^ 2 [/ matemáticas] es una función.

No es recursivo. Una función recursiva es aquella que se llama a sí misma.

La función [matemática] f [/ matemática] como la definí, no es lineal porque no satisface las dos propiedades de las funciones lineales: aditividad y homogeneidad (de grado 1).

Aditividad: [matemática] f \ izquierda (x + y \ derecha) = f (x) + f (y) [/ matemática]

Homogeneidad: [matemática] f \ left (\ alpha x \ right) = \ alpha ^ {k} f \ left (x \ right) [/ math] para todos los que no sean cero [math] \ alpha [/ math] (y para linealidad, el grado [matemática] k [/ matemática] debe ser [matemática] 1 [/ matemática])

No. x ^ 2 es una expresión matemática. La recursión es un rasgo de las funciones informáticas.

Editar: Como señalé Chris y cuando tropecé mientras respondía, existe una función recursiva en matemáticas.

F (x) = X! podría definirse recursivamente como:

F (x) = {1 si X = 1; X * f (x-1) si X> 1.}

Podría escribir la función cuadrada como una función recursiva que no utiliza la multiplicación.

int cuadrado (int x) {
if (x == 1) devuelve x;
int a = cuadrado (x-1);
devuelve a + x + x-1;
}

Sugerencia no lo implemente de esta manera.

Quizás esta es la formulación más simple en términos de recursión

int power (int x, n) {
if (n == 0) devuelve 1;
de lo contrario, devuelve x * potencia (x, n-1);
}

“Lineal” tiene una definición específica. Dados cualquiera de los dos puntos en una función lineal, se llama a decirle al resto de los puntos (están en línea recta). y = mx + b es lineal, donde myb son constantes. y = SomeOtherFunctionOf (x) no lo es.

More Interesting

¿Por qué si tenemos una reducción en el tiempo polinomial de un problema de P a un problema de NP, esto no muestra que P = NP (pero al contrario)?

¿Cuál es la mejor manera de transformar una secuencia de 0 y 1 en otra secuencia que tenga el mayor número posible de 0 y exista una forma de revertir la nueva secuencia?

Cómo calcular los componentes conectados, sin usar la función nx.connected_components (g) en NetworkX

¿Qué abstracciones te parecen interesantes? ¿Por qué?

Dados N puntos en el plano, ¿qué es un algoritmo eficiente para encontrar todos los conjuntos de 3 o más puntos colineales?

¿Existe, por casualidad, alguna interconexión entre la teoría de la complejidad computacional y el aprendizaje profundo?

¿Cuál es la definición estricta entre datos continuos y discretos?

¿Cuáles son algunos temas imprescindibles en matemáticas discretas y probabilidad de programación competitiva?

¿La informática es matemática aplicada?

Me encanta aprender teoría, pero no siempre disfruto escribiendo código. ¿Cómo me pueden pagar para vivir en el mundo de los pensamientos? ¿Solo estoy siendo vago?

¿Por qué la mayoría de los informáticos tienen un título en matemáticas?

¿Cómo se comprueba si esta función está bien definida o no?

¿Qué debe incluirse en cualquier programa que use la función matemática?

¿Cuántas matemáticas se necesitan en la codificación?

¿Cómo generar números aleatorios reales? He estado jugando con la función rand () en C ++. Leí de varias fuentes en línea que los generadores de números aleatorios que vienen con el paquete son bastante básicos. Hay alguna manera de corregir esto