c++ - 使用递归将基数提高到它的指数 - C++

标签 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;
    }
}

有趣的是,当我运行这个程序时,它一直返回“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/

相关文章:

recursion - 从递归到迭代的方法

c++ - 在 C++ 中使用 pow 时精度损失

c++ - 如何计算大数的位数? C++

C++ - 线程导致了奇怪的输出

c++ - 单例实现 - 为什么需要复制构造函数?

c++ - 为什么我需要为传递给 Y 组合器的函数指定返回值

javascript - QML/Javascript : Adding Self-Referencing Attribute to Subarrays Inside Nested var Matching Some Identifier

c++ - 为什么 vector<bool> 不是 STL 容器?

Java - 为什么原始包装类(例如整数)的值不在递归调用中维护?

c - 无符号长整数的 Pow 精度