C语言设计一个求幂级数xn的非递归函数和递归函数。
时间: 2024-03-10 22:50:14 浏览: 24
非递归函数:
```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;
}
```
其中,非递归函数利用了快速幂算法的思想,递归函数则是将幂级数拆分为两半,分别递归求解,然后合并结果。
相关问题
用c语言写一个递归函数求0-100的和
以下是用C语言实现递归函数求0-100的和的代码:
```c
#include <stdio.h>
int sum(int n);
int main()
{
int result = sum(100);
printf("The sum of 0 to 100 is: %d\n", result);
return 0;
}
int sum(int n)
{
if (n == 0)
{
return 0;
}
else
{
return n + sum(n - 1);
}
}
```
在这个代码中,我们定义了一个名为 `sum` 的函数,该函数使用递归方法计算0到100之间的和。函数接受一个整数参数 `n`,如果 `n` 等于0,则直接返回0。否则,函数将 `n` 与 `n-1` 的和递归地传递给 `sum` 函数,直到 `n` 变成0为止。最后,函数返回所有递归调用的和。
在 `main` 函数中,我们调用 `sum` 函数并将结果打印到控制台上。
用c语言编写递归求幂函数
以下是用 C 语言编写的递归求幂函数:
```c
#include <stdio.h>
double power(double base, int exponent);
int main()
{
double base;
int exponent;
printf("Enter base: ");
scanf("%lf", &base);
printf("Enter exponent: ");
scanf("%d", &exponent);
double result = power(base, exponent);
printf("%lf ^ %d = %lf", base, exponent, result);
return 0;
}
double power(double base, int exponent)
{
if (exponent == 0) {
return 1;
} else if (exponent < 0) {
return 1 / power(base, -exponent);
} else {
return base * power(base, exponent - 1);
}
}
```
这个函数的实现比较简单,它使用了递归的思想,将求幂的问题转化为了多次相乘的问题。当指数为 0 时,返回 1;当指数为负数时,先将指数取绝对值,然后将结果取倒数;当指数为正数时,递归调用函数,每次将指数减 1,并将结果与基数相乘。