我只是想编写一些代码,利用函数的递归来提高基数。我知道递归不是用 C++ 做事的最正确方法,但我只是想稍微探讨一下这个概念。该程序要求用户提供底数和指数,然后控制台输出答案。这是我编写的程序:
#include <iostream>
#include <math.h>
using namespace std;
int raisingTo(int, int);
int main()
{
int base, exponent;
cout << "Enter base value: ";
cin >> base;
cout << "Enter exponent value: ";
cin >> exponent;
int answer = raisingTo(base, exponent);
cout << "The answer is: " << answer << endl;
char response;
cin >> response;
return 0;
}
int raisingTo(int base, int exponent)
{
if (exponent > 0)
return 1;
else if (exponent = 0)
{
int answer = (int) pow((double)base, raisingTo(base, (exponent - 1)));
return answer;
}
}
有趣的是,当我运行这个程序时,它一直返回“1”的答案!有人可以帮我解决这个问题吗?
最佳答案
int raisingTo(int base, unsigned int exponent)
{
if (exponent == 0)
return 1;
else
return base * raisingTo(base, exponent - 1);
}
您有 3 个主要问题:
- 你不必使用 pow 函数
- 要比较数字,你应该使用
==
因为=
是一个赋值而不是比较。 - 你错过了如果指数等于 0 你应该返回 1。
关于c++ - 使用递归将基数提高到它的指数 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9348933/