网上看到了如标题所示的题目,就开始想如果用程序来算的话,那么它的算法是怎样的。
自己想了半天,第一感觉要用递归,
如先算出
当 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
当n=3k,k>1的时候,最大的积是3^k
当n=3k+1, k>1的时候,最大的积是3^(k-1)*4
当n=3k+2, k>1的时候,最大的积是3^k*2
感想:做程序做多了,很容易会按照程序的思维来考虑问题,这个是思维定式。
所以我们发散思维,灵活应对,依靠其他的知识来处理某些问题。