使用Recursion将基数提升到其指数 - C++

Ram*_*rth 0 c++ recursion pow

我只想编写一些代码,利用函数的递归来提高函数的基础.我知道递归不是用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我运行这个程序时,它会一直将答案返回为"1"!有人可以帮我这个吗?

Sea*_*ull 8

int raisingTo(int base, unsigned int exponent)
{
    if (exponent == 0)
        return 1;
    else
        return base * raisingTo(base, exponent - 1);
}
Run Code Online (Sandbox Code Playgroud)

你有3个主要问题:

  • 您不必使用pow功能
  • 要比较数字,你应该使用==作为=不比较的作业.
  • 你错过了如果指数等于0你应该返回1.