一个正整数N,拆成任意个正整数之和,怎样使这些数的乘积最大

网上看到了如标题所示的题目,就开始想如果用程序来算的话,那么它的算法是怎样的。

自己想了半天,第一感觉要用递归,

如先算出

当 n=1 max=1 

当 n=2 max=1

当 n=3 max=2

。。。

那么当n=k max=????

就是没有找出规律出来。 

后来感觉上是否按照数学上的某些规律来求这个算法。网上搜索之后,发现,还真是。

 

网上的答案:

1的时候是1,2的时候是1,3的时候是2,4的时候是4,5的时候是6
当n=3k,k>1的时候,最大的积是3^k
当n=3k+1, k>1的时候,最大的积是3^(k-1)*4
当n=3k+2, k>1的时候,最大的积是3^k*2 
 
感想:做程序做多了,很容易会按照程序的思维来考虑问题,这个是思维定式。
   所以我们发散思维,灵活应对,依靠其他的知识来处理某些问题。
 

posted on 2014-03-13 15:09  郭永荣  阅读(724)  评论(0编辑  收藏  举报