C语言 用递归方法求X的n次方

#include<stdio.h>
#include<math.h>
float p(float x,int n)
{
float w;
if(n=0)
w=1;
else
w=p(n-1)*x;
return w;
}
main()
{
printf ("%f",p(2,8));
}

请问这个代码有什么问题。。。

第1个回答  推荐于2017-09-15
#include<stdio.h>
#include<math.h>
float p(float x,int n)
{
 float w;
 if(n==0)    //这里要双等号
  w=1;
 else
  w=p(x,n-1)*x;    //这里调用少传一个参数
 return w;
}
main()
{
 printf ("%f",p(2,8));
}

本回答被提问者采纳
第2个回答  2018-11-11
#include "pch.h"
#include <iostream>
#include <stdio.h>
using namespace std;
double countXn(double, int);
int main()
{
/*double x;
int n;*/
double c;
c = countXn(2.5, -4) + countXn(-3.5, 3) + countXn(0, 12) + countXn(-27.9, 0);
printf("c=%lf", c);
}
/*//非递归计算x^n的函数
double countXn(double n, int x) {
double m = 1.000000;
if (x > 0) {
for (int i = 1; i <= x; i++) {
m = m * n;
}
}
if (x == 0) {
m = m;
}
if (x < 0) {
for (int i = 1; i <= (-x); i++) {
m = m / n;
}
}
return m;
}*/
//递归方法
double countXn(double x, int n) {
if (n==0) {
return 1.0;
}
if (n > 0) {
return x * countXn(x, n - 1);
}
if (n < 0) {
return (1 / x) * countXn(x, n + 1); //“*”改为“/”会有玄学问题
}
}
第3个回答  2013-05-24
递归调用的时候怎么只给一个参数?追问

什么意思。。。

追答

w=p(n-1)*x;

这行代码有错,p函数不是需要两个参数吗?
改成这样
w=p(x,n-1)*x;

第4个回答  2013-05-24
不考虑n过大导致溢出的问题的话,代码还有2个地方有错。
w=p(n-1)*x; 应该改为 w=p(x,n-1)*x;
p函数有2个参数,你只传了一个值
if条件判断是用 ==, 一个=号是赋值运算
完整代码:
#include<stdio.h>
#include<math.h>
float p(float x,int n)
{
float w;
if(n==0)
w=1;
else
w=p(x,n-1)*x;
return w;
}
main()
{
printf ("%f",p(2,8));
}

C语言 用递归方法求X的n次方
int power(int x,int n){ if(n==0)return 1;elseif(n%2==1)return x*power(x,n-1);else{ int y=power(x,n\/2);return y*y;} } int main(){ int a,b,c;printf("enter x and n:");setvbuf(stdout,NULL,_IONBF,0);scanf("%d%d",&a,&b);c=power(a,b);printf("结果...

写一递归函数求x的n次方
double f(double x,int n){if(n==0)return 1;else if(n>0)return x*f(x,n-1);else return f(x,n+1)\/x;} int main(){double x;int n;scanf("%lf%dc",&x,&n);if(x==0){ if(n!=0)printf("%lg^%d=0\\n",x,n);else printf("error!");} else printf("%lg^%d=...

c语言x的n次方递归应用
include"stdio.h"int power(int x,int n);main(){ int r,i,n; scanf("%d",&n); for(i=1;i<6;i++) { r= power(i,n); printf("%d\\n",r);}} int power(int x,int n){if(n==0) return x;\/\/注意这里是x不是1else return x*power(x,n-1);} ...

C语言 利用递归函数求X的n次方程序填空
long power(x ,n)int x, n;{ long y;if(n>0)y = x * power(x, n-1);else y = 1;return y;}

调试,用递归函数计算X的N次方
double fun(int n,double x); \/\/加了此行,否则要把fun函数移到main函数之前 void main(){ double x, root;int n;printf("Input x,n:");scanf("%lf%d",&x,&n);root=fun(n,x);printf("Root=%.2f\\n",root);} \/*调试时设置断点*\/ double fun(int n,double x){ if(n==...

编程计算X的n次方。要求:用递归函数,用TC编译
double pow(double x,int n){ if(n==1){ return x;} else { double temp=pow(x,n-1);return (x*temp);} } void main(){ double a;int b;printf("Please input two numbers:");scanf("%lf%d",&a,&b);printf("%lf^%d=%lf\\n",a,b,pow(a,b));} 这个代码是对的。

编写求x的n次方的递归函数,并在主函数中调用它
include<stdio.h>double mypow(double x,int n){if(n==0)return 1; if(n>0)return x*mypow(x,n-1); else return mypow(x,n+1)\/x;}int main(){double x; int n; scanf(("%lf%d",&x,&n); printf("%lf\\n",mypow(x,n)); return 0;} ...

设计一递归函数计算x的n次方。
因为没说明x是否是整形. 所以就以浮点型写了个. 你参考下.如果需要整形的话将类型改下就可以了.#include< stdio.h >double power(double x,int y){ if(y==0) return 1.0;return power(x,y-1)*x;}int main(){ int y;double x;scanf( "%lf%d", &x, &y );printf( "%.2lf\\n...

c++编写求x的n次方的递归函数,并在主函数中调用、输出。 函数定义必 ...
x,int n){ \/\/ 这里初始化下 float t = 0; \/\/ 如果等于0,则返回1 if (n==0) { return 1; } if(n>0) t=x*rpow(x,n-1); else t=(1\/x)*rpow(x,n+1); return t;}int main(){ float x,t; int n; printf("请输入x和n"...

c语言中x的n次方 用for 语句 怎么写?
double num=x;double num1=1;for(int i=0;i<n;i++){ num1=num1*x }

相似回答