C语言 用递归函数求数值的整数次幂 double power(double x,int p)输入负整数次幂时出现问题代码如下:#includedouble power_positive(double n,int p);double power_negative(double n,int p);int main(void){double x,xpow;int ex

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 02:15:40
C语言 用递归函数求数值的整数次幂 double power(double x,int p)输入负整数次幂时出现问题代码如下:#includedouble power_positive(double n,int p);double power_negative(double n,int p);int main(void){double x,xpow;int ex

C语言 用递归函数求数值的整数次幂 double power(double x,int p)输入负整数次幂时出现问题代码如下:#includedouble power_positive(double n,int p);double power_negative(double n,int p);int main(void){double x,xpow;int ex
C语言 用递归函数求数值的整数次幂 double power(double x,int p)输入负整数次幂时出现问题
代码如下:
#include
double power_positive(double n,int p);
double power_negative(double n,int p);
int main(void)
{
double x,xpow;
int exp;
printf("Enter a number and the integer power to which\n");
printf("the number will be raised.Enter q to quit.\n");
while(scanf("%lf %d",&x,&exp)==2)
{
if(x==0)
printf("%lf to the power of %d is 0.\n",x,exp);
else if(exp==0)
printf("%lf to the power of %d is 1.\n",x,exp);
else if(exp>0)
{
xpow=power_positive(x,exp);
printf("%lf to the power of %d is %lf.\n",x,exp,xpow);
}
else
{
xpow=power_negative(x,exp);
printf("%lf to the power of %d is %lf.\n",x,exp,xpow);
}
printf("Enter next pair of numbers or q to quit.\n");
}
printf("Hope you enjoyed this power trip --BYE!\n");
return 0;
}
double power_positive(double n,int p)
{
double pow=1;
if(p>0)
pow=n*power_positive(n,(p-1));
return pow;
}
double power_negative(double n,int p)
{
double pow=1;
double re;
int q;
q=-p;
if(q>0)
pow=n*power_negative(n,q-1);
re=1/pow;
return re;
}
可以运行.编译不报错.但是输入负整数次幂时计算结果根本就不对.也不知道错到哪里了.请高人指教哈.
比如说2的-2次幂是0.5
2的-3次幂还是0.5
一直都是0.5..

C语言 用递归函数求数值的整数次幂 double power(double x,int p)输入负整数次幂时出现问题代码如下:#includedouble power_positive(double n,int p);double power_negative(double n,int p);int main(void){double x,xpow;int ex
double power_negative(double n,int p)
{
double pow = 1;
int q;
q=-p;
if(q>0)
pow = power_negative(n,1-q) / n;
return pow;
}
改成这样,虽然你那个写的是递归调用,但是返回的却是1/pow,那么就会是0.5 * 2 * 0.5 * 2 * 0.5这样的形式返回,所以最终无论是多少,结果都是0.5,而且递归时应该用1-q,因为你调用负数求幂,必须使参数为负才会正确

C语言 用递归函数求数值的整数次幂 double power(double x,int p)输入负整数次幂时出现问题代码如下:#includedouble power_positive(double n,int p);double power_negative(double n,int p);int main(void){double x,xpow;int ex C语言,用递归求整数m,n的最大公约数. 请教一道c语言题,利用递归函数计算x的n次幂. 用递归的方法编写函数求Fibonacci级数,观察递归调用的过程.用C语言写. 用递归函数(C语言)求1!+2!+3!+...+n! 用循环结构求出10!C语言用函数的递归调用求sum=1+2+3+4+…+n的和,整数n从键盘输入. C语言求输入的整数的位数和利用递归函数求输入任意介于0和9999999之间的整数的位数和 C语言递归函数和反递归函数设计一个函数要求能将一个证整数n反序输出,n的位数不定,分别用递归函数和非递归函 如123 输出为321 编写完整程序并调试 C语言用递归算法实现:整数模幂运算 x的r次模p.用循环控制比较简单,但是自己用递归写了个运行时结果不算法思想如下,希望用递归实现:(1) a←x,b←r ,c←1(2)若b=0,则输出c,结束.(3)若b是正的 C语言程序题:1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现并通过判断是否定义了宏RECURSION来决定对递归fact或非递归fact函数进行编译,最好调用fact函数计算 写一算法:求一树中数值最大的数(用到递归) C语言 C语言编程:用函数递归法求Fibonacci数列的前n项·帮帮忙··写下注释·· 用C语言函数的递归调用实现求数列1,1,2,3,5,8……..前30项之和. 用C语言 写一个函数用于计算1!+2!+3!+…+n!的值(使用函数递归完成) 求详细的用C语言利用递归方法求5!.3Q利用递归方法求5!.并附上详细说明 2、 编写程序:使用函数(或递归函数)调用方法求3!+5!+7!之和,要求阶乘函数(或递归函数)名为fact;我需要的是C语言的程序 用母函数求递归函数的非递归表示的例子. C编程设计递归函数求x^n的值