请高手编一个程序!

zcj_gqbz 2005-03-23 08:49:53
用递归的方法,求x的y次幂。
...全文
117 点赞 收藏 10
写回复
10 条回复
zcj_gqbz 2005年03月25日
看了热心的朋友们写的程序,我获益匪浅。我又把程序改进了一番,现贴出来,希望能够抛砖引玉。
#include <iostream>
#include <iomanip>
using namespace std;
double getPower(double x,int y)
{
if(y<0)
return 1/x*getPower(x,y+1);
else if(y==0)
return 1;
else
return x*getPower(x,y-1);
}
void main()
{
int y;
double x;
cin>>x>>y;
cout<<getPower(x,y)<<endl;
}
回复 点赞
FromNoWhere 2005年03月24日
哦, 错了, 没注意到递归, 递归就照上面的:) 没什么新意, 要不就加上大整数条件:)
回复 点赞
FromNoWhere 2005年03月24日
template<class _Ty> inline
_Ty _Pow_int(_Ty _X, int _Y)
{unsigned int _N;
if (_Y >= 0)
_N = _Y;
else
_N = -_Y;
for (_Ty _Z = _Ty(1); ; _X *= _X)
{if ((_N & 1) != 0)
_Z *= _X;
if ((_N >>= 1) == 0)
return (_Y < 0 ? _Ty(1) / _Z : _Z);
}
}
回复 点赞
vc_devc 2005年03月24日

double pow_(double x,int y){
if(y<0){
return 1/pow(x,-y);
}
else if(y==0){
return 1;
}
else {
return x*pow(x,y-1);
}
}
回复 点赞
zcj_gqbz 2005年03月24日
谢谢朋友们的指教!我学c++不久,对递归不大了解 根据以上朋友的程序 我把程序进一步完整如下:
int getPower(int x,int y)
{
if(y<0) { cout<<"The program is error!"; return 0; }
else if(y==0) return 1;
else return x*=getPower(x,y-1);
}
回复 点赞
SNSCZ1985 2005年03月24日
exp(y*ln(x)),用这个好像就行了吧!!如果要自己写的话,楼上的很详细啊!
回复 点赞
宋宝华 2005年03月24日
int pow(int x,int y)
{
if(y==1) return x;
else return x*pow(x,y-1);
}
或者
int pow(int x,int y)
{
if(y==0) return 1;
else return x*pow(x,y-1);
}
回复 点赞
llmsn 2005年03月24日
同意楼上.
回复 点赞
astrophor 2005年03月23日
int pow(int x,int y)
{
if(y==1) return x;
else return x*pow(x,y-1);
}
回复 点赞
ptang 2005年03月23日
exp(y*ln(x))
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告