有关C语言函数递归调用的问题
本帖最后由 涛行 于 2020-10-25 17:03 编辑今天写码用了一下函数递归调用,结果输入n大了之后就会死循环,小白已经束手无策了{:301_972:},望大佬们帮忙看一下,谢谢大佬们
#include<stdio.h>
int pnx(int n, float x);
int main()
{
int n;
float x;
printf("Please input n&x:");
scanf("%d%f", &n, &x);
pnx(n, x);
return 0;
}
int pnx(int n,float x)
{
int px1, px2;
float px;
if (n < 0)return -1;
else
{
if (n == 0)px = 1;
else if (n == 1)px = x;
else
{
px1 = pnx(n - 1, x);
px2 = pnx(n - 2, x);
px = ((2 * n - 1) * x - px1 - (n - 1) * px2) / n;
}
printf("pn(x)=%f\n", px);
}
return px;
}
本帖最后由 挑灯看花 于 2020-10-25 13:14 编辑
当我没说{:301_1004:} 应该是冗余计算太多了那,n大了之后计算机假死了。
qwer01234 发表于 2020-10-25 13:12
应该是冗余计算太多了那,n大了之后计算机假死了。
那该怎么改呢 n大了估计会爆栈吧。。。 Loongson2012 发表于 2020-10-25 13:18
n大了估计会爆栈吧。。。
n=3就不是一个结果了 没有大神帮忙看看嘛 涛行 发表于 2020-10-25 13:17
那该怎么改呢
不是,就是终止条件有问题 hrdom 发表于 2020-10-25 14:28
不是,就是终止条件有问题
至于具体怎么改,我没怎么看懂是什么逻辑,是求什么的 hrdom 发表于 2020-10-25 14:33
至于具体怎么改,我没怎么看懂是什么逻辑,是求什么的
计算N阶勒让德多项式