而不使用乘法或除法运算符。只能使用加/减运算符。
发布于 2011-02-14 00:24:13
一个无意义的问题,但可以用对数的性质来解决:
pow(a,b) = exp( b * log(a) )
= exp( exp(log(b) + log(log(a)) )注意确保指数函数和对数函数使用相同的基数。
是的,我知道怎么用滑轮。学习这个技巧将改变你对对数的看法。
发布于 2011-02-14 00:14:11
如果它们是整数,则很容易将pow ( a,b)转换为a的b个乘法。
pow(a, b) = a * a * a * a ... ; // do this b times将a*a简单地转换为加法
a * a = a + a + a + a + ... ; // do this a times如果你把它们结合起来,你就可以制造电力。
首先,生成mult(int a,int b),然后使用它来生成幂。
发布于 2011-02-14 00:21:10
递归解决方案:
#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));
}https://stackoverflow.com/questions/4985221
复制相似问题