# C++用递归方法求x^n，x和n由键盘输入完整可运行源代码及过程

38 篇文章 3 订阅
24 篇文章 0 订阅

PS：此代码为实验多次反复修改的结果，如有误请在评论区指出，本人就一初学小菜鸟

//4、用递归方法求x^n，x和n由键盘输入。递归公式为：
//             x            n = 1
//y = x^n =
//             x * x^(n - 1)           n > 1
//函数原型为： long xn(long, long);
#include <iostream>
using namespace std;


int main()
{
system("pause");//按任意键继续
return 0;//返回正常退出值
}

PS：题目给定的函数类型是long，那我们就依葫芦画瓢，也用Long创建两个变量

int main()
{
long x = 0;
long n = 0;
cout << "请输入需要计算的底数x: ";
cin >> x;
cout << "请输入次幂n: ";
cin >> n;
system("pause");
return 0;
}

emmm，忘了个很重要的问题，得先创建一个xn函数体，给它传入两个参数吧，hiahia还是x,n，类型也是long

long xn(long x, long n)
{

}

long xn(long x, long n)
{
return 0;
}

emmm,思索片刻，刚刚我们讲到把它分为两个帮派讨论

long xn(long x, long n)
{

int y = 0;

if (n == 0)//如果次幂n是0，底数变为1并传递给接收结果的变量y
{
y = 1;
//cout << "y = " << y << endl;
}
return y;
}


long xn(long x, long n)
{

int y = 0;

if (n == 0)//如果次幂n是0，底数变为1并传递给接收结果的变量y
{
y = 1;
//cout << "y = " << y << endl;
}
else//n>1
{
if (n < 0)//n<0
{
x = 1 / x;
n = -n;
y = x * xn(x, n);
//cout << "y = " << y << end;
}
}
return y;
}

if之外的if  就是else if

long xn(long x, long n)
{

int y = 0;

if (n == 0)//如果次幂n是0，底数变为1并传递给接收结果的变量y
{
y = 1;
//cout << "y = " << y << endl;
}
else//n>1
{
if (n < 0)//n<0
{
x = 1 / x;
n = -n;
y = x * xn(x, n);
//cout << "y = " << y << endl;
}
else if (0 < n < 1)
{
y = x * xn(x, 1 / n);
}
}
return y;
}

0到1之间的解决了，那就还有一个1咯，n==1

long xn(long x, long n)
{

int y = 0;

if (n == 0)//如果次幂n是0，底数变为1并传递给接收结果的变量y
{
y = 1;
//cout << "y = " << y << endl;
}
else//n>1
{
if (n < 0)//n<0
{
x = 1 / x;
n = -n;
y = x * xn(x, n);
//cout << "y = " << y << endl;
}
else if (0 < n < 1)
{
y = x * xn(x, 1 / n);
}
else if (n == 1)//n=1
{
y = x;
//cout << "y = " << y << endl;
}
}
return y;
}

long xn(long x, long n)
{

int y = 0;

if (n == 0)//如果次幂n是0，底数变为1并传递给接收结果的变量y
{
y = 1;
//cout << "y = " << y << endl;
}
else//n>1
{
if (n < 0)//n<0
{
x = 1 / x;
n = -n;
y = x * xn(x, n);
//cout << "y = " << y << endl;
}
else if (0 < n < 1)
{
y = x * xn(x, 1 / n);
}
else if (n == 1)//n=1
{
y = x;
//cout << "y = " << y << endl;
}
else if (n > 1)
{
y = x * xn(x, n - 1);
//cout << "y = " << y << endl;
}
}
return y;
}

int sum=xn(x,n)

int sum;
sum=xn(x,n);
//或者直接一步到位
int sum=xn(x,n);

//4、用递归方法求x^n，x和n由键盘输入。递归公式为：
//             x            n = 1
//y = x^n =
//             x * x^(n - 1)           n > 1
//函数原型为： long xn(long, long);
//此代码为实验多次，反复修改的结果
#include <iostream>
using namespace std;

long xn(long x, long n)
{

int y = 0;

if (n == 0)//如果次幂n是0，底数变为1并传递给接收结果的变量y
{
y = 1;
//cout << "y = " << y << endl;
}
else//n>1
{
if (n < 0)//n<0
{
x = 1 / x;
n = -n;
y = x * xn(x, n);
//cout << "y = " << y << endl;
}
else if (0 < n < 1)
{
y = x * xn(x, 1 / n);
}
else if (n == 1)//n=1
{
y = x;
//cout << "y = " << y << endl;
}
else if (n > 1)
{
y = x * xn(x, n - 1);
//cout << "y = " << y << endl;
}

}
return y;
}

int main()
{
long x = 0;
long n = 0;
cout << "请输入需要计算的底数x: ";
cin >> x;
cout << "请输入次幂n: ";
cin >> n;
//scanf("%d%d\n", &x, &n);//录入用户输入的两个数据
int sum=xn(x, n);
cout << "y=" << sum << endl;//输出函数返回的结果，在最后一步统一输出，否则，每一个条件，只要n>1的都会输出
system("pause");
return 0;
}

• 6
点赞
• 17
收藏
觉得还不错? 一键收藏
• 1
评论

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、付费专栏及课程。