如何使用乘法函数来执行指数函数?

Posted

技术标签:

【中文标题】如何使用乘法函数来执行指数函数?【英文标题】:How to use a multiply function to execute an exponent function? 【发布时间】:2020-11-02 03:32:53 【问题描述】:

所以我有一个任务来创建一个添加函数。然后创建一个不使用运算符并使用 add 函数的乘法函数。现在我需要使用这个乘法函数来创建一个幂(指数)函数。这是我迄今为止的尝试:

function add(a, b)
   return a + b;

// console.log(add(6, 4))
    
    
function multiply(first, second)
    let i = 0;
    let answer = 0;
    while(i < second)
        answer += add(first, 0);
        i += 1;
    
    return answer;


// let m = multiply(10, 4)
// console.log(m);
    
    
function power(x, n)
    let i = 0;
    let answer = multiply(x, x);
    let total = 1;
    while(i < n)
        total += multiply(x, answer)
        i += 1;
     
     return total;

let p = power(2, 4)
console.log(p)

我似乎被困在这里,因为我所做的任何更改都没有帮助。关于这个有什么建议吗?

【问题讨论】:

“我所做的任何更改都没有帮助”是什么意思? 正如我目前所做的所有更改都没有达到预期的结果。 说真的,“我到目前为止所做的所有更改都没有达到预期的结果”是什么意思?我正在寻找确切的更改、什么不起作用、你是怎么知道的、什么错误、你想要什么等等。对问题的模糊描述并不是很有帮助。 【参考方案1】:

我认为您在那里所做的是将 n 与 x^3 相乘,然后将其加 1。 因为总计等于 1。并且答案等于 x^2,所以乘法(x,答案)会给你 x^3。您在每次迭代中将 x^3 添加到总数中,因此总数将为您提供 1+(n*x^3)

我建议你试试这个:

function power(x, n)
    let i = 0;
    let answer = 1;
    while(i < n)
        answer = multiply(x, answer)
        i += 1;
     
     return answer;

【讨论】:

啊!非常感谢,在这里看到它看起来比我尝试做的要简单得多。我盯着电脑太久了……【参考方案2】:

这应该是正确的函数:

function power(x, n)
    let i = 1;
    let total = x;
    while(i < n)
        total = multiply(total,x)
        i += 1;
     
     return total;

您将每个乘法的结果相加,实际上您只想获得最终的乘法结果。另外,索引是错误的。

【讨论】:

【参考方案3】:

快速修复

function power(x, n)
        var m = x; // multiplier
        while(1 < n)
            x = multiply(x, m);
            n++;
        
        return x;
    

【讨论】:

以上是关于如何使用乘法函数来执行指数函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用递归函数(C#,D&C)避免非常大的数字的溢出乘法

如何使用内部函数 C++ 将 3 个加法和 1 个乘法转换为矢量化 SIMD

如何将 glRotatef() 转换为 glMultMatrixd() 的乘法矩阵

MATLAB | 最小二乘法的两种解读

MATLAB | 最小二乘法的两种解读

如何定义一个函数编写出99乘法表。?