编写递归函数getPower计算x^y,在同一个程序中针对整型和实型实现两个重载的函数:
int getPower(int x,int y); //整型形式,当y<0时,返回0
double getPower(double x,int y); //实型形式
在主程序中实现输入输出,分别输入一个整数a和一个实数b作为底数,再输入一个整数m作为指数,输出“a”和"b"。另外请思考,如果在调用getPower函数计算a^m时希望得到一个实型结果(实型结果表示范围更大,而且可以准确表示m<0时的计算结果)该如何调用?
源程序:
#include<iostream>
using namespace std;
int getPower(int x,int y);
double getPower(double x,int y);
int main()
{
int iNumber,power;
double dNumber;
int iAnswer;
double dAnswer;
cout<<"Enter an int base number:";
cin>>iNumber;
cout<<"Enter a double base number:";
cin>>dNumber;
cout<<"To what power?";
cin>>power;
iAnswer=getPower(iNumber,power);
dAnswer=getPower(dNumber,power);
cout<<iNumber<<"to the"<<power<<"the power is"<<iAnswer<<endl;
cout<<dNumber<<"to the"<<power<<"the power is"<<dAnswer<<endl;
return 0;
}
int getPower(int x,int y)
{
if(y==1)
return x;
else if(y==0)
return 1;
else if(y<0)
return 0;
else
return(x*getPower(x,y-1));
}
double getPower(double x,int y)
{
if(y==1)
return x;
else if(y==0)
return 1;
else if(y<0)
return 1/getPower(x,y);
else
return (x*getPower(x,y-1));
}
如果在调用getPower函数计算a^m时希望得到一个实型结果,可以将a强制转换为double类型:
dAnswer=getPower((double)iNumber,power);