c语言,使用递归改写power()函数,使其可以计算负指数,运行出现错误 求指导

作者&投稿:吉炊 (若有异议请与网页底部的电邮联系)
C语言函数递归调用,vcVC++6.0编译器,看看这个程序有什么错误?正数次方正常运行,负数次方就~

else y=1/x*power(x,n+1);的运算顺序是(1/x)*power(x,n+1); x为负数,1/x无意义,自然会奔溃 另外,scanf的双引号里的内容不用加逗号

int ex(int a)
{
int b;
if(a!=1)
b=ex(a-1)*a;
else
b=1; //这里!
return(b);
}

希望可以帮到你!

#include <stdio.h> // 使用递归改写power()函数,使其可以输出负指数
double power(double n,int p)
{
double pow,s;
if(n==0&&p || n==1)
return n;

else if(p>0) {
pow=n*power(n,p-1);
return pow;
}
else if(p<0) {
s=power(n,-p); //该地方出现错误!!!
return 1/s;
}
else
return 1;
}
int main (void)
{
double x;
int n;
scanf("%lf%d",&x,&n);
power(x,n);
printf("%.3lf to the power %d is %.5lf\n",x,n,power(x,n));
return 0;
}

//楼主还应该注意0的0次方是1

#include <stdio.h>
double power(double n,int p)
{
double pow;
if(n==0 || n==1)return n;
if(p>0)
{
pow=n*power(n,p-1);
return pow;
}
else
return 1;
}
int main()
{
double x,y;
int n;
scanf("%lf%d",&x,&n);
if(n>=0)
y=power(x,n);
else
y=1.0/power(x,-n);
printf("%.3f to the power %d is %.5f\n",x,n,y);
return 0;
}
这样也行的


c语言,使用递归改写power()函数,使其可以计算负指数,运行出现错误 求指 ...
include <stdio.h> \/\/ 使用递归改写power()函数,使其可以输出负指数 double power(double n,int p){ double pow,s;if(n==0&&p || n==1)return n;else if(p>0) { pow=n*power(n,p-1);return pow;} else if(p<0) { s=power(n,-p); \/\/该地方出现错误!!!re...

c语言:用递归方法编写程序,求n阶勒让德多项式的值
define_CRT_SECURE_NO_WARNINGS include<stdio.h> include<stdlib.h> doublelegendre(intn,intx){ if(n==0){ return1;} if(n==1){ returnx;} return((2*n-1)*x-legendre(n-1,x)-(n-1)*legendre(n-2,x))\/n;} voidmain(){ intn;intx;printf("请输入n的值和x的值\\n");sc...

C语言编程:用递归法将一个整数n转换成字符串。
1、新建一个工程和.c文件 ,输入头文件和主函数。2、声明被调用的函数,定义变量类型。3、输入整数。4、用一个if语句去判断整数是否为负数,若为负数则用putchar函数输出一个负号。5、调用一个函数。6、定义函数的返回类型和形参类型。7、通过if语句判断该数是否仅剩一位数,若不是则执行else语句。8...

[C语言]用递归算法编写一个程序求Fibonacci数列的第n项值
include<iostream> include<vector> using namespace std;vector<int>a,b,c;void jisuan(int n){ if(n<=1)cout<<1<<endl;else{ a.push_back(1);b.push_back(1);for(int i=2;i<=n;++i){ c=b;\/\/存一下b的值 for(int j=b.size()-1,k=a.size()-1;k>=0;k--,j--){...

c语言:采用递归方法实现将输入的字符串按反序输出
以下是使用递归方法实现将输入字符串按反序输出的 C 语言程序:```c include <stdio.h> \/\/ 递归函数,将字符串 str 按反序输出 void printReverse(char *str) { if (*str == '\\0') { \/\/ 判断是否到达字符串结尾 return;} else { printReverse(str + 1); \/\/ 递归调用,输出下一...

c语言:编写函数,采用递归方法将任一整数转换为二进制形式。
int Into2nd(int x,int r[],int n)\/\/该函数返回值为二进制的位数 {if(x==0) {if(n==0) {r[0]=0; return 1;} else return n;} r[n]=x%2;return Into2nd(x\/2,r,n+1);} 使用方法:n=Into2nd(x,r,0);for (i=n-1;i>=0;i--) printf("%d",r[i]);...

C语言程序:用递归法将一个整数n转化成字符串
\/\/至此,递归结束,开始打印数字,首先打印最后一次递归的结果1 \/\/然后打印倒数第二次的结果2 \/\/最后打印3,输出123 void convert(int n){ int i; \/\/定义整数变量 if ((i=n\/10)!=0)\/\/如果整数i除以10后不为0,说明高位还有值,需要更多字符来表示 convert(i);\/\/调用自身,使用除以10后的i值 ...

C语言用递归算法求解下面这个题!!!求大神
以下是使用递归算法实现上述程序的C语言代码:include <stdio.h> float sum(int n) { if (n == 0) { \/\/ 基本情况 return 0;} else { float s = 0;for (int i = 1; i <= n; i++) { \/\/ 计算1\/1+2+3+...+n s += i;} return sum(n-1) + 1\/s; \/\/ 递归...

C语言中如何用递归的方法求从n个数中取m个数的排列组合的所有情况,其 ...
典型的组合问题,解法有递归、回溯等等递归法较简单,代码如下: void combine(int a[], int n, int m, int b[], int M); 参数:a 存放候选数字n 总项数m 取出项数b 存放选出结果M = m include "stdio.h"#define MAX 100 void combine(int a[], int n, int m, int b[], int ...

用递归求表达式1-2+3-4……-100的和(注:C语言)
可以使用递归来实现对表达式 `1-2+3-4……-100` 求和。递归算法的基本思路是将一个大问题分解成多个相同或类似的小问题,然后将这些小问题按照一定规律组合成大问题的解。对于这道题,可以将表达式 `1-2+3-4……-100` 分解成两个子问题:- 1-2+3-4……-98-99+100 - -99+100 然后对...

左云县19118214587: c语言,使用递归改写power()函数,使其可以计算负指数,运行出现错误 求指导 -
岛怜蛇胆: #include <stdio.h> // 使用递归改写power()函数,使其可以输出负指数 double power(double n,int p) { double pow,s; if(n==0&&p || n==1) return n; else if(p>0) { pow=n*power(n,p-1); return pow; } else if(p<0) { s=power(n,-p); //该地方出现错误!!...

左云县19118214587: C语言递归算法写二进制转十进制的程序 -
岛怜蛇胆: #include"stdio.h" double power(double x,int n) //递归实现函数转换{double val=1.0;while(n--)val*=x;return(val);}void main() {int i,n,value=0; char ch;printf("请输入您要输入的二进制位数:");scanf("%d",&n);printf("输入一个%d...

左云县19118214587: c语言运行结果不对 求num的power次方 -
岛怜蛇胆: x=x*getpower(x,y-1); 修改为 return x*getpower(x,y-1); 比较好点 实际运行情况:在linux下运行没有什么问题.只要输入的数不是很大,超出int所能表示的范围

左云县19118214587: C语言题.用递归法写一个求幂的函数,并在主函数实现调用.要用c语言,不要c++的. 提示
岛怜蛇胆: #include&lt;stdio.h&gt; int power(int x,int n) { if(n == 0) //任何数的0次方都是1 return 0; else if(n ==1) //如果是1次方 则返回本来的值 return x; else //否则递归循环 return x*power(x,n-1); } main() { printf("%d ",power(3,3)); printf("%d ",power(4,2)); getchar(); return 0; }

左云县19118214587: 编写一个程序接收一个double类型变量a,int变量b,计算a的b次方,要求使用递归,怎么写? -
岛怜蛇胆: 主要代码 double power(double a,int b) { if (b==1) return a; else return power(a,b-1)*a; } int main() { double a; int b; scanf("%lf%d",&a,&b); printf("%lf\n",power(a,b)); return 0; }

左云县19118214587: 如何用C语言搞递归函数 -
岛怜蛇胆: #include<iostream> using namespace std;void print(int w) {int i;if(w==0) return; print(w-1);for(i=1;i<w;i++) printf("%d ",w);printf("%d\n",w); } int main() {print (5);}

左云县19118214587: 求一道C语言递归编程 -
岛怜蛇胆: 通项是 t(x, i) = (-1)^i*x^(2i+1)/((2i+1)*fac(i)) , i = 0,1,2,...#include <stdio.h> double fac(int a) { return a>0 ? a*fac(a-1) : 1; } double power(double x, int n) // n >= 0 required.{ return n>0 ? x*power(x, n-1) : 1; } int main() { int i; double x, res = 0; printf("...

左云县19118214587: C语言关于函数的递归 -
岛怜蛇胆: 你的递归程序是错的,我转来个对的,带讲解的,你看看.语言函数的递归和调用一、基本内容: C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己. 要点: 1、C语言函数可以递归调用. 2、...

左云县19118214587: 输入一个正整数 用递归实现将整数逐位正序输出每一位数(c语言) -
岛怜蛇胆: #include <stdio.h>void f(int a) {if (a < 10)printf("%d", a);else{f(a/10);printf("%d", a%10);} }int main() {int a; printf("a = ");scanf("%d", &a);f(a);getchar();return 0; }

左云县19118214587: 请用C语言编写递归函数 -
岛怜蛇胆: //循环实现#include<stdio.h> int main() { int n, t = 0; scanf("%d", &n); if(n<=0)return 0; else while(n){ t = t * 10 + n % 10; n /= 10; } printf("%d", t); return 0; }简单修改一下就可以变递归了.代码如下#include<stdio.h> int fanzhuan(int n,int t){ t = t *...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网