C 重写power函数 递归与循环

来源:互联网 发布:枪口动能计算器软件 编辑:程序博客网 时间:2024/05/29 02:18

重写power()函数,返回一个double型的正整数的任意次幂。另外要处理0的任意次幂都为0,任何数的任意次幂都为1(函数应报告0 的 0 次幂未定义,并将该值返回1)。分别使用循环和递归实现。

利用循环程序如下:

#include<stdio.h>
double power(int n, int x);
int main()
{
int num, x;
printf("please enter num and x:");
scanf("%d %d", &num, &x);
printf("%d^%d=%.3lf",num,x, power(num, x)); 
return 0;
}
double power(int n, int x)
{
double sum = 1;
int i;
if (n != 0)
{
if (x == 0)
return 1;
else
if (x > 0)
{
for (i = 0; i < x; i++)
sum *= n;
return sum;
}
else
{
for (i = 0; i < -x; i++)
sum *= 1.0 / n;
return sum;
}
}
else
if (x ==0)
{
return 1;
printf("0^0 no defined\n");
}
else
return 0;
}

利用递归程序如下:

#include<stdio.h>
double power(int n, int x);
int main()
{
int num, x;
printf("please enter num and x:");
scanf("%d %d", &num, &x);
printf("%d^%d=%.3lf", num, x, power(num, x));
return 0;
}
double power(int n, int x)
{
if (n != 0)
{
if (x > 0)
return n*power(n, x - 1);
else
if (x == 0)
return 1;
else
return 1.0 / n*power(n, x + 1);
}
else
if (x == 0)
{
printf("0^0 no defined\n");
return 1;
}
else
return 0;
}

程序结果:

please enter num and x:3 3
3^3=27.000
please enter another num and x:3 -3
3^-3=0.037
please enter another num and x:5 0
5^0=1.000
please enter another num and x:0 5
0^5=0.000
please enter another num and x:0 0
0^0 no defined
0^0=1.000
please enter another num and x:#
bye!
请按任意键继续. . .

0 0
原创粉丝点击