hhjc.net
当前位置:首页 >> C经典使用递归求x的y次方 >>

C经典使用递归求x的y次方

#include<stdio.h> 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(

这样修改:#include <iostream> using namespace std; GetPower(int x, int y) {if(y==1) return x; int g; if(x>1&&y>1) return (GetPower(x,y-1)*x); } int main() {int a,b; cin>>a>>b; cout<<GetPower(a,b)<<endl;} 应该就可以了

给你个高速的 二分递归 注意了只是一个函数 你需要加个main来运行 int powerx(int x,int n) { if (n==1) return x; else if (n==0) return 1; else return (powerx(x,n/2),powerx(x,(n/2+n%2))); }

#include int function(int x,int y){ int i,s=1; for(i=1;i

直接乘就是,为什么要递归?后面的else没有return啊. 用dev-c++通过.#include <stdio.h> int func1(int x,int y); void main(){ int y, x, result; scanf("%d%d",&x,&y); result=func1(x,y); printf("x^y=%d\n",result); getch(); } int func1(int x,int y){ if(y==1){ return x; }else{ return func1(x,y-1)*x; } }

#include<stdio.h>main(){ int x,y; int getpower(int x,int y); printf("input x,y\n"); scanf("%d,%d",&x,&y); printf("%d\n",getpower(x,y));}int getpower(int x,int y){ int k; if(y==1) k=x; else k=getpower(x,y-1)*x; return k;} 你对int getpower(int x,int y)函数声明的方式错误了.

#include double pow(double x, double y); pow()用来计算以x 为底的 y 次方值,然后将结果返回.设返回值为 ret,则 ret = x^y

double my_pow(double x, int y){if (y == 0) return 1.0; // x 的来 0 次方源肯2113定5261是41021653 1if (y == 1) return x; // x 的 1 次方肯定是 xreturn x * my_pow(x, y - 1);}

y^x == exp(ln(y^x))==exp(x*ln(y))要用到浮点运算

/*用递归求x的n次方*/#include<stdio.h>int digui(int a,int b){if(b==0){ return 1;}else if(b==1){return a;}else{b--;a= a*digui(a,b);return a;}}void main(){int x;int n;int y;printf("X=");scanf("%d",&x);printf("n=");scanf("%d",&n);y=digui(x,n);printf("\nx^n=%d",y);}

网站首页 | 网站地图
All rights reserved Powered by www.hhjc.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com