淘宝杜琨
"所以pow(2,count-1)+pow(2,count-1)次abs()函数的调用>pow(2,count)"
你这话的意思是宁可循环操作,也不调用函数,因为函数的代价太大了.
也就是说改后的程序效率不如没改的.
宁可循环操作,也不调用函数.有道理!
可惜你没看程序,其实在循环中也调用了函数Calculate(int count,int sum)啊!
不过还是谢谢你!在你的话中到经过头脑分析的东西!我也受益!
『数据结构与算法』告诉我们:
高效率的第一要素是算法设计。
楼主不妨公布那道程序设计的题目,
比你高效N倍的程序定会跃然纸上。
往日无冤,近日无仇。俺–★–
为什么要“贬”楼主呢?因为
楼主的两版程序一个都没调通。
证据:
1。如果都调通,效率高低立见分晓,何需问人?
2。新版不通。因为至少存在下列语法错误:
else if(min_sum == abs(sum);) //多了分号
{
if(me_total < 15) me[me_total]=sum_no;
me_total++;
}
3。老版不通。因为至少存在下列运行故障:
void Calculate(int count,int sum)
{ char i;
for(i=0;i<2;i++)
{ sum=sum+Sign(i)*stone[count];
if(count > 0)
Calculate(count-1,sum);
根据C的传值机制,红色累加的结果
无法通过目前的sum形参反馈回来。
4。新版程序的全局变量之多令人咋舌,
这就为调试埋伏下不少隐患。
===========================================
当然楼主下列自以为是的话语(floor 12)
实在不好意思!
一来题目很老了,有人讨厌我再提.
二来没必要看完全部代码.
三来我觉得我已将问题写清楚了,也许你不这样认为,你问一下不行吗!
出自一个求助者也令人厌恶。
楼主不妨公布那道程序设计的题目,
比你高效N倍的程序定会跃然纸上。
这话可是你说的哦!那我期待你高效N倍程序.
这题目本来很旧了,我也不想提,只是心里有点不甘,所以近段时间在想它.
下面是题目,你应该见过:
转载:大家又没有比较好的思路阿!借鉴一下