如何在函数实现中执行a + b的函数(a,b)的帮助下计算24a + 36b?

时间:2016-08-01 16:49:07

标签: c++ c math

我有一个查询,

我已经实现了函数func(a,b),它返回了a + b的结果,现在我想用最小的函数调用来计算24a + 36b

感谢您的回复

没有其他操作员或任何移位器只有这个功能可用

2 个答案:

答案 0 :(得分:1)

// do the 12*(2*a + 3*b) as per Thomas Matthews comment
ab = func(a,b);
a2b2 = func(ab,ab);
a2b3 = func(a2b2,b);
k2_a2b3 = func(a2b3,a2b3);
k4_a2b3 = func(k2_a2b3,k2_a2b3);
k8_a2b3 = func(k4_a2b3,k4_a2b3);
r = func(k8_a2b3,k4_a2b3);

如果你不能将中间结果存储到其他变量中,那么替换变量应该非常接近最佳变量,尽管由于某些原因我不能确定 最佳。 (正如我不是100%确定这是变量的最佳解决方案,只有99%肯定)

只是为了它的乐趣,被替换的func被称为59次:

return func(func(func(func(func(func(func(a,b),func(a,b)),b),func(func(func(a,b),func(a,b) )),b)),func(func(func(func(a,b),func(a,b)),b),func(func(func(a,b),func(a,b)), b))),func(func(func(func(func(a,b),func(a,b)),b),func(func(func(a,b),func(a,b)), b)),func(func(func(func(a,b),func(a,b)),b),func(func(func(a,b),func(a,b)),b)) )),func(func(func(func(func(a,b),func(a,b)),b),func(func(func(a,b),func(a,b)),b) ),func(func(func(func(a,b),func(a,b)),b),func(func(func(a,b),func(a,b)),b)))) ;

答案 1 :(得分:0)

如果你想加24乘以a和36乘以b,你可以在调用函数时直接进行乘法。所以你可以写:

func(24*a, 36*b);