¿Qué es un algoritmo recursivo (pseudocódigo) que calcula la suma de los primeros enteros positivos impares?

Mucha gente ha dado pseudocódigo, así que en su lugar daré una respuesta más teórica, porque la recursión es un concepto difícil de entender al principio pero hermoso después de que lo hagas.

Cuando encuentre un algoritmo para resolver este problema (o problemas en general), piense cuál es la solución antes de pensar cómo llegar a él.

Entonces que es la solucion aqui? Es útil enmarcar matemáticamente la pregunta, x = suma de (primeros n enteros positivos impares). Podríamos usar algunos símbolos matemáticos sofisticados para esto, pero lo importante es obtener una comprensión semántica clara de lo que está sucediendo. Piense en x como algo que existe inherentemente como un número en alguna realidad trascendental: lo que debe hacer es descubrir cuáles son las propiedades de este número.

Entonces, ¿qué es x? Bueno, x es una función de n, ¿verdad? En otras palabras, depende lógicamente del valor de n. Llamemos a esta función foo. Si n es 1, la respuesta es simplemente 1 (entonces foo (n) es 1). Esto se llama condición de borde , en terminología recursiva. Si n no es uno, entonces x es n + foo (n-2). Simplemente pasa “foo” el enésimo número entero impar (donde el enésimo número entero impar es 2n-1), y la función funciona lógicamente.

En resumen, x es 1 cuando n es 1. De lo contrario, es (el enésimo número impar) + (la suma de todos los n-1 números impares).

(También puede hacerlo al revés y hacer que 2n-1 sea la condición de borde y subir recursivamente la cadena de números, pero esa es solo otra forma de ver la realidad subyacente).

En cuanto a cómo codificar esto en un idioma determinado, otras personas han dado ejemplos, y hay varias formas de codificarlo. Lo importante es comprender lógicamente lo que quiere hacer y por qué funciona; entender qué es x, conocer sus propiedades y qué lo hace funcionar. Conozca la naturaleza del problema y puede codificarlo de muchas maneras. Puede codificarlo usando recursividad o usando bucles. Puede codificarlo con una máquina de escribir o una mariposa. Comprender el por qué, no solo el cómo, es lo que hace a un buen programador.

Bueno, el primer paso es descubrir cuál es el enésimo entero impar. Tenemos 1, 3, 5, 7 … Entonces el enésimo número entero impar es (2n-1). Así que ahora solo necesitamos un bucle.

Obtener n
Verifique que n sea un entero positivo
conjunto k = (2n-1)
establecer suma = 0
mientras k> 0
establecer suma = suma + k
conjunto k = k -2
terminar mientras bucle
suma de retorno

Escriba un programa que acepte un número entero positivo n e imprima la suma de los primeros n números impares.

En el enlace dado arriba. tendrá que proporcionar el valor de n como 10. cuando proporcione el valor de n como 10, dará la suma de los primeros 10 enteros impares positivos.

Solución recursiva de cola en python:

def odd_sum(n):
def rec(n, current_odd, current_sum):
return current_sum if n == 0 else rec(n-1, current_odd+2, current_sum+current_odd)
return rec(n, 1, 0)

suma de funciones (int n, int val)
{
si (n == 1)
retorno val;
retorno val + suma (n-1, val + 2);
}

Espero que pueda obtener este pseudocódigo, donde n será el número total de enteros, ‘val’ será inicialmente 1.

def main ():
n = int (input ())

print (getSum (n))

def getSum (n):
si n == 1:
volver n
más:
return n + getSum (n-1)

if __name__ == ‘__main__’:
principal()