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

原文链接: http://www.cnblogs.com/guoyongrong/p/3598616.html

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

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

如先算出

当 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 
 
感想:做程序做多了,很容易会按照程序的思维来考虑问题,这个是思维定式。
   所以我们发散思维,灵活应对,依靠其他的知识来处理某些问题。
 

转载于:https://www.cnblogs.com/guoyongrong/p/3598616.html

猜你喜欢

转载自blog.csdn.net/weixin_30266885/article/details/94794622
今日推荐