C语言递归调用

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:37:47
#include "stdio.h"
main()
{long f(long p,long double g);
long n;
long double x,k;
printf("请输入n的值:");
scanf("%ld",&n);
prinft("请输入x的值:");
scanf("%ld",&x);
k=f(n,x);
printf("%lf",k);}
long f(long p,long double g)
{long c,d,l;
for(p=0;p>=0;p--)
if(p==0)
c=1;
else if(p==1)
c=g;
else if(p>=1)1
d=f(p-1,g);
l=(p-1)*f(p-2,g);
c=((2*p-1)*g-d)/p;
return(c);
}
题目要求求N阶勒让德多项式的值,我编译后VC7提示warning c4717:"f":如递归所有控件路径,函数将导致堆栈溢出.
请问是啥意思?应该如何修改?谢谢!

式子是这个
1 (n=0)
Pn(x)= x (n=1)
((2n-1)·x - Pn-1 (x)-(n-1)·Pn- 2(x))/n (n>=1)

用递归

#include "stdio.h"

double legendre(int n, double x)
{
if (n == 0) return 1;
else if (n == 1) return x;
else return ( (2*n-1)*x - legendre(n-1,x) - (n-1)*legendre(n-2,x) ) / n;
}

void main()
{

long n;
long double x,k;
printf("请输入n的值:");

scanf("%ld",&n);

printf("请输入x的值:");

scanf("%ld",&x);

k=legendre(n,x);

printf("%lf\n",k);
}