请高手编一个程序!

zcj_gqbz 2005-03-23 08:49:53
用递归的方法,求x的y次幂。
...全文
146 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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))

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧