lq_xunlian_Main12(幂方分解)

问题描述

任何一个正整数都可以用2的幂次方表示。例如:

137=27+23+20

同时约定方次用括号来表示,即ab 可表示为a(b)。

由此可知,137可表示为:

2(7)+2(3)+2(0)

进一步:7= 22+2+20 (21用2表示)

3=2+20

所以最后137可表示为:

2(2(2)+2+2(0))+2(2+2(0))+2(0)

又如:

1315=210 +28 +25 +2+1

所以1315最后可表示为:

2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

输入格式

输入包含一个正整数N(N<=20000),为要求分解的整数。

输出格式

程序输出包含一行字符串,为符合约定的n的0,2表示(在表示中不能有空格)

解题思路

        递归解决,在递归体内n为1或2时结束,用一个StringBuffer保存结果,先循环找到满足条件的p的最大值,当n = p时递归参数填s;否则分两种情况,一是n==p时递归参数是(n-p),其他非特殊情况就调用两次递归完成。

源代码


Main12

感悟:递归的使用真是的千变万化,但是万变不离其宗,找到结束条件,找到要递归实现的内容就可以很好的实现题目要求。

蓝桥杯,加油!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,733评论 3 71
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  • (五)田小班 最近几天可真够风平浪静的,自从上次的连环事件后,一切都是那么安宁,欧阳轩的日常任务也就是救救阿猫阿狗...
    Pokemonster阅读 367评论 3 4
  • 有时候真的怨 怨自己不够强 怨自己太好说话 怨自己被人当做软柿子 怨自己不够手段 也许这就是所谓的禀性难移 我不想...
    沐浴午后的阳光阅读 486评论 0 0
  • 年来月下哀伤默,只为前尘灌溉缘。 等待春归朝露尽,回身刹那绽芳魂。 多少年来,月下哀伤,沉默不语,只为前尘,灌溉之...
    幽小窗阅读 482评论 34 48