进制转换

本文详细介绍了如何将非负十进制整数转换为2到16进制的方法,通过递归函数实现。首先,通过除b取余法解释了二进制转换的过程,接着分析了如何将正整数表示为2的幂次方的和。内容涵盖递归栈的原理,算法构造及实现,并通过调试和运行结果进行问题排查和总结,加深了对递归和递归栈的理解。
摘要由CSDN通过智能技术生成

一、题目描述
题目1:将非负十进制整数n转换成b进制。(其中b=2~16)
题目2:任何一个正整数都可以用2的幂次方表示。例如:
    137=2^7
    +2^3
    +2^0    
同时约定幂次方用括号来表示,即ab 可表示为a(b)。
   由此可知,137可表示为:
     2(7)+2(3)+2(0)
进一步:7= 2^2
+2+2^0 (21用2表示)
     3=2+2^0
所以最后137可表示为:
     2(2(2)+2+2(0))+2(2+2(0))+2(0)
   又如:1315=2^10
   +2^8 +2^5 +2+2^0
所以1315最后可表示为:
   2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
  输入:正整数(n≤20000)
输出:符合约定的n的0,2表示(在表示中不能有空格)
输入格式 Input Format
一个正整数
输出格式 Output Format
符合约定的n的0,2表示(在表示中不能有空格)
样例输入 Sample Input
73
样例输出 Sample Output
2(2(2)+2)+2(2+2(0))+2(0)

二、题目分析:
①题目一:
把十进制n转换成b进制,可以使用除b取余法。
以二进制为例:
十进制的9用二进制表示为1001,其处理过程为
在这里插入图片描述
构造递归函数:x表示要转换的十进制数,f(x)为转换从二进制的结果,为一个0,1构成的序列。此次的“+”是连接的意思,那么二进制转换的递归函数为:
在这里插入图片描述
f(9)= f(9/2)+9%2=f(4)+1
=f(4/2)+4%2+1=1f(2)+01
=f(2/2)+2%2+01=1001
对于B进制,只要把2换成B就好了。
②题目二
先把n转换成二进制,记录n二进制为1的位的位数,即为指数,最低位为0;x表示输入整数;f(x)为输出序列;count为指数“+”为连接符。
在这里插入图片描述

三、算法构造
(1)题目一递归栈:
在这里插入图片描述
四、算法实现
(1)题目一:


public static String tonBinary(int n,int b) {
   
	if(n==0) {
                //递归出口
		return 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值