首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您将如何在C中实现pow(a,b)?条件如下--

您将如何在C中实现pow(a,b)?条件如下--
EN

Stack Overflow用户
提问于 2011-02-14 00:09:19
回答 4查看 5.7K关注 0票数 0

而不使用乘法或除法运算符。只能使用加/减运算符。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-14 00:24:13

一个无意义的问题,但可以用对数的性质来解决:

代码语言:javascript
复制
pow(a,b) = exp( b * log(a) )
         = exp( exp(log(b) + log(log(a)) )

注意确保指数函数和对数函数使用相同的基数。

是的,我知道怎么用滑轮。学习这个技巧将改变你对对数的看法。

票数 9
EN

Stack Overflow用户

发布于 2011-02-14 00:14:11

如果它们是整数,则很容易将pow ( a,b)转换为a的b个乘法。

代码语言:javascript
复制
pow(a, b) = a * a * a * a ... ; // do this b times

将a*a简单地转换为加法

代码语言:javascript
复制
a * a = a + a + a + a + ... ; // do this a times

如果你把它们结合起来,你就可以制造电力。

首先,生成mult(int a,int b),然后使用它来生成幂。

票数 4
EN

Stack Overflow用户

发布于 2011-02-14 00:21:10

递归解决方案:

代码语言:javascript
复制
#include<stdio.h>




    int multiplication(int a1, int b1)
    {
       if(b1)
         return (a1 + multiplication(a1, b1-1));
       else
         return 0;
    }

   int pow(int a, int b)
    {

       if(b)
         return multiplication(a, pow(a, b-1));
       else
         return 1;
    }    


    int main()
    {
      printf("\n %d", pow(5, 4));
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4985221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档