前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实训任务—二次幂的进阶表示

实训任务—二次幂的进阶表示

作者头像
程序员周同学
发布2019-07-23 10:31:58
5530
发布2019-07-23 10:31:58
举报
文章被收录于专栏:程序员周同学程序员周同学

01

前言

这个公众号(搜索:jay-ztx)以后作为主体更新,这也是真正属于我自己的一个公总号,周同学的学习小屋是让同学帮我注册的,毕竟那时候还未成年,无法创建以自己为主体的公总号平台,希望大家能继续关注我,寒假期间会给大家分享很多好玩的代码,可以用来写一些简单的小游戏,下面进入正题(暂时先把实训试题更新完,寒假可能更新一个C语言小系统)

02

题目

现在来看看题目

2-4. 如果上题中的幂大于1,则幂也要用2的幂形式输出。(10分)

如:87 = 2(6)+2(4)+2(2)+2(1)+2(0)

= 2(2(2)+2(1))+2(2(2))+2(2(1))+2(1)+2(0)

= 2(2(2(1))+2(1))+2(2(2(1)))+2(2(1))+2(1)+2(0)

样例输入:87

样例输入:2(2(2(1))+2(1))+2(2(2(1)))+2(2(1))+2(1)+2(0)

(根据中学生信息竞赛题改编)

03

思路

这题很明显要使用递归调用,否则根本不知道要几次循环转换才能将次幂也转换成2次幂的形式,我们需要思考的问题有两点

  1. 什么时候进入递归调用
  2. 什么时候结束递归调用

这两个问题如果没有思考清楚,写完之后绝对会进入无限递归调用。


首先思考

第一个问题:什么时候进入递归调用呢?

第一次递归调用的时候肯定是在输入数据之后。

在往后的递归过程中每次都是判断次幂是否大于1,大于1就把这个值再次传入函数之中,直到,次幂 等于1或者0

第二个问题:什么时候结束递归调用

每次我们传入一个数据之后,首先计算出这个数以下最大的一个二次幂表示数,例如:5以下最大是4,表示为2(2),用传入的数据,减去这个最大的值,如果为0,则输出2(n)并立刻return。结束这次递归调用

那么现在来看看我写的程序吧

04

后话

前面已经说过了,以后用这个公众号(jay-ztx)来发布各种文章

不仅仅是C语言,还有c++,java的学习。

感谢各位小伙伴的支持~

往期作品:

【巩固学习_实训】第一次任务

【巩固学习_实训】任务二_回形矩阵

【巩固训练_实训】任务二_全排列

【巩固训练_实训】任务二第四题

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员周同学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档