用C++编写输入两个数,如,X,Y,求X的Y次方.

yjip267 2008-03-18 05:29:46
这是我编的,Y是正数能实现,Y是负数就不对了.不知道怎么才能完善这个程序请大家指点一下.谢谢!我在VC++里面编的.
#include <iostream>
using namespace std;
long fun(int x,int y);
int main()
{ int number,power;
long answer;
cout<<"输入一个数";
cin>>number;
cout<<"输入次方数:";
cin>>power;
answer = fun(number,power);
cout<<number<<"to the"<<power<<"th power is"<<answer<<endl;
return 0;
}
long fun(int x,int y)
{ if (y==1)
return x;
else
return (x*fun(x,y-1));
}
...全文
2670 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjlxlx 2008-03-19
  • 打赏
  • 举报
回复
循环和判断就可以解决的问题……
tsocpp 2008-03-19
  • 打赏
  • 举报
回复
幂为负在数学上也是有定义的呀

x的-y次方应该返回x的y次方的倒数啊
jianjun7 2008-03-19
  • 打赏
  • 举报
回复
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
double x,y;
while(cin>>x>>y)
{
cout<<pow(x,y)<<endl;
}
return 0;
}
ouyh12345 2008-03-19
  • 打赏
  • 举报
回复
幂为负数很正常的
babyofbaby 2008-03-19
  • 打赏
  • 举报
回复
一楼很搞笑,四楼正解
hasen2008 2008-03-18
  • 打赏
  • 举报
回复
#include <iostream>
#include <cmath>
using namespace std;

template <typename _T>
_T Square(int x, int y)
{
if ((0 == x) || (1 == x))
{
return x;
}
if (0 == y)
{
return 1;
}
if (1 == y)
{
return x;
}

if (0 < y)
{
return x * Square<_T>(x, y - 1);
}
else
{
return 1 / (x * Square<_T>(x, abs(y) - 1));
}
}

void main()
{
double x;
int y;
cout << "input x , y:" << endl;
cin >> x;
cin >> y;

double z1 = 0;
int z2 = 0;

y < 0 ? z1 =
Square<double>(x, y)
: z2 = Square<int>(x, y);

cout << "NAGATIVE:" << z1 << endl;
cout << "PULUS:" << z2 << endl;

}
WZL19870523 2008-03-18
  • 打赏
  • 举报
回复
用递归,很好
paidfighting 2008-03-18
  • 打赏
  • 举报
回复
爱用递归的人不少啊
Lynn_Ran 2008-03-18
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

long fun(int iNumber,int iPower);

int main()
{
int iNumber, iPower;
long iAnswer;
cout << "输入一个数";
cin >> iNumber;
cout <<"输入次方数:";
cin >> iPower;
iAnswer = fun(iNumber, iPower);
if ( iPower >= 0 )
cout << iNumber << " to the " << iPower << "th power is " << iAnswer << endl;
else
cout << iNumber << " to the " << iPower << "th power is 1/" << iAnswer << endl;
return 0;
}

long fun(int iNumber,int iPower)
{
long iAnswer = 1;

if ( iNumber==0 || iNumber==1 || iPower==1 )
return iNumber;
else if ( iPower == 0 )
return 1;
else if ( iPower < 0 )
iPower = -iPower;
for ( int i=1; i<=iPower; i++)
iAnswer *= iNumber;
return iAnswer;
}


这么简单的题别用递归了吧……
ouyh12345 2008-03-18
  • 打赏
  • 举报
回复
如果y是负数的话,返回值为long就不对了,得返回double
ouyh12345 2008-03-18
  • 打赏
  • 举报
回复
long fun(int x,int y)
{
if (x==0 || x==1)
return x;

if (y==1)
return x;

if (y == 0)
return 1;

if (y > 0)
return (x*fun(x,y-1));

return fun(x, y+1) / x;
}
小猪瑞比 2008-03-18
  • 打赏
  • 举报
回复
汗 这么小都递归????

X的3次方,不就是X * X * X 嘛

进来判断一个,如果是负数,则先取绝对值,最后加上‘-’就行了呗。

64,654

社区成员

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

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