Dev - C++ - Duda de funciones programacion en C

 
Vista:

Duda de funciones programacion en C

Publicado por ale (14 intervenciones) el 25/03/2020 04:08:46
El problema dice así:

Los polinomios de Legendre se pueden calcular mediante las fórmulas Po = 1, P1 = x,
P(n) = [(2n - 1)/n] . P(n-1) - [n - I)/n]. P(n-2),
en donde n = 2, 3, 4, oo., y x es un número en coma flotante entre -1 y 1. (Advertir que los
coeficientes de los polinomios de Legendre son cantidades en coma flotante.)
Generar los n primeros polinomios. Los valores de n y x deben ser parámetros de entrada.

Lo he resuelto pero el valor final del polinomio me sale el mismo valor que el x introducido.Cual es mi error. Dejo el codigo que usé.(programacion en C)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
float polinomio(int n, float x){
	if(n==0){
		return (1);}
 
	else if (n==1){
			return (x);}
 
		else{
				return polinomio(n-1,x)*((2*n-1)/n)-polinomio(n-2,x)*((n-1)/n);}
		}
 
main(){
	int n;
	float x;
 
	printf("Digite el valor de n ");
	scanf("%i",&n);
	printf("Digite el valor de x ");
	scanf("%f",&x);
 
	if(x<1 && x>-1){
 
	printf("El valor del polinomio es %f ",polinomio(n,x));}
	else{printf("x tiene que pertenecer al rango de <-1,1>");
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda de funciones programacion en C

Publicado por Rodrigo (539 intervenciones) el 25/03/2020 18:24:27
Cuando tienes 2 valores enteros en una division, el resultado es entero, no es flotante.

5/2 es 2, no es 2.5
2/5 es 0, no es 0.4

n es entero en tu programa y aparece en divisiones, en alguna de ellas, el resultado sera 0.

Para que esta clausura no ocurra, haz que al menos 1 de los operandos de la division no sea entero.

5.0 / 2 = 2.5
5 / 2.0 = 2.5
5.0 / 2.0 = 2.5

int variable1, variable2

variable1 / variable2 = entero
(float) variable1 / variable2 = float
variable1 / (float) variable2 = float
(float) variable1 / (float) variable2 = float

Es posible que el tipo de dato no sea float, sino double, no recuerdo bien la regla, pero al menos esta regla modificada va a ayudar a entender el comportamiento que tienes en tu codigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar