secuencia con y sin recursión
-
19-09-2019 - |
Pregunta
Tengo una secuencia.
a1 = 1 - cos(x);
ai = a1 + (-1)^(i-1) * x^(2*i-2) / (2*i-2)!
Tengo que escribir esto con y sin recursividad. Pero tiene un diferentes resultados.
Aquí está mi código: http://codepaste.net/q213q6
Solución
Me voy a operar bajo la suposición de que esta es la tarea, si estoy equivocado voy a volver y editar este post o republica.
En primer lugar, usted debe tratar de escribir su función factorial de manera recursiva cola. A pesar de que probablemente no hará mucha diferencia en C, es una buena práctica.
int helper( int x, int acc ) {
if( x == 0 ) {
return acc;
}
else {
return helper( x - 1, acc * x );
}
}
int factorial( x ) {
helper( x, 1 );
}
A continuación, por lo general no quiere poner un bucle dentro de sus funciones recursivas, que algo derrotas el punto. Pensar en una llamada recursiva como una iteración con una prueba y la posibilidad de restitución o recuperación.
Otros consejos
Desde que está realizando la aritmética de coma flotante. Las diferentes formas de aplicación pueden producir resultados diferentes. En su caso se me ocurre un lugar donde se incurre en pérdidas
currC = pow(x, 2*i-2);
no es igual a
47: currC = currC * x * x;
Para obtener más información, http://en.wikipedia.org/wiki/Floating_point#Multiplication