C语言设计一个求幂级数xn的非递归函数和递归函数。
时间: 2024-03-10 21:50:14 浏览: 72
C语言中递归函数的设计完整版资料.ppt
非递归函数:
```c
double power_nonrecursive(double x, int n) {
double res = 1.0;
int i;
for (i = n; i != 0; i >>= 1) {
if (i & 1) {
res *= x;
}
x *= x;
}
return n < 0 ? 1.0 / res : res;
}
```
递归函数:
```c
double power_recursive(double x, int n) {
if (n == 0) {
return 1.0;
}
if (n < 0) {
x = 1.0 / x;
n = -n;
}
double res = power_recursive(x, n / 2);
return n % 2 == 0 ? res * res : x * res * res;
}
```
其中,非递归函数利用了快速幂算法的思想,递归函数则是将幂级数拆分为两半,分别递归求解,然后合并结果。
阅读全文