循环中的幂函数

时间:2015-06-02 20:12:20

标签: c++ loops

我需要帮助编写电源功能。因此,我需要编写一个porogramm,它将在LOOP中以1的幂输出一个表。不使用POW或EXP     输出示例:

0^0 == 1
1^1 == 1
2^2 == 4
3^3 == 27
4^4 == 256
(and so on, up to)
10^10 == 10000000000

不使用Cmath(NO POW或EXP)

例如:

e.g。 power(3.0,5)将返回243因为3 * 3 * 3 * 3 * 3是243 例如power(173,0)将返回1,因为任何上升到0的幂都是1。

我做了这个简单的循环,但我不知道如何在其中插入电源公式。我也在考虑while循环

#include <iostream>
#include <string>
using namespace std; 

int main(){

    int number = 0, tot;

    for (int table = 0; table < 10; table++)
    {
        tot = number * table;
        cout << tot << endl;
        number++;
    }    
}

2 个答案:

答案 0 :(得分:0)

这是一个递归函数,可以计算一个提升到整数幂的值

double power(double base, unsigned int exp)
{
    if (exp == 0)
    {
        return 1.0;
    }
    else
    {
        return base * power(base, exp - 1);
    }
}

执行此操作的迭代方法是

double power(double base, unsigned int exp)
{
    double product = 1.0;
    for (unsigned int i = 0; i < exp; ++i)
    {
        product *= base;
    }
    return product;
}

您可以使用类似

的方法测试任一方法
int main()
{
    std::cout << power(5, 3);
}

输出

125

答案 1 :(得分:0)

我认为你现在已经知道了自己问题的答案,但仍然存在;一些提示:

  1. Exponentiation是基数的重复乘法,重复由指数定义。
  2. 在C ++或任何现代编程语言中,循环允许重复某些代码块:当预先知道迭代次数时,使用for循环,否则,使用while循环。
  3. 结合两个提示:你需要使用循环来重复乘法;事先知道重复(或迭代)的数量,因此,for循环将是最好的。

    int exponentiation(int base, int exponent) {
        int result = 1;
        for (int i = 0; i < exponent; ++i)
            result = result * base;
        return result;
    }
    

    注意:这只适用于带正指数的整数取幂!

    然后,您可以在for循环中调用此函数,让它计算您想要的值:

    #include <iostream>
    
    int main(int argc, char** argv) {
        for(int i = 0; i <= 10; ++i)
            std::cout << exponentiation(i, i) << '\n';
    }