内置类型开方

迭代公式:x[n+1] = x[n] + {a/x^(k-1)-x[n]}/k

发现BUG,谢谢联系!

函数sqrtn() 中,参数x是被开方数, k是开方次数,x0是迭代初值,n是迭代次数;

pow() 使用的应该不是迭代法。

 1 # include <stdio.h>
2 # include <math.h>
3
4 long double sqrtn(double x, int k, double x0, int n);
5
6 int main()
7 {
8 int k, n;
9 double A, x0;
10
11 while (~scanf("%lf%d%lf%d", &A, &k, &x0, &n))
12 printf("%lf\n", (double)sqrtn(A, k, x0, n));
13
14 return 0;
15 }
16
17 long double sqrtn(double x, int k, double x0, int n)
18 {
19 int i;
20 long double ans = x0;
21 for (i = 0; i < n; ++i)
22 {
23 ans = ans + ((double)x/pow(ans, k-1)-ans)/(double)k;
24 }
25 return ans;
26 }
原文地址:https://www.cnblogs.com/JMDWQ/p/2394674.html