我正在尝试在C#中递归地实现苍鹭算法。我真的不明白我的代码哪里错了:
给出算法的定义:
x[n+1] = (p-1) /p*x[n] + a/p*x[n]^p-1
Where xo = 1 and p root apublic static double Heron(int x,int p,int a)
{
if(x == 0)
{
return 1.0;
}
return ((p-1.0)/p)*Heron(--x,p,a)+a/(p*Math.Pow(Heron(--x,p,a),--p));
}如Heron(1,3,5)应返回7/3;
发布于 2022-05-02 22:04:40
不要修改表达式中x和p的值。
只管用
double x_n = Heron(x-1,p,a);
return ((p-1.0)/p)*x_n+a/(p*Math.Pow(x_n,p-1));我还在x_n中保留了递归的值,因此它不会被调用两次。
https://stackoverflow.com/questions/72092547
复制相似问题