⼗进制转⼆进制c语⾔递归,【数据结构】求⼗进制转⼆进制的
递归算法
【背景】
在计算机中,基本的编码都是以⼆进制为基础。为此,理解进制转换过程,可以帮助我们更好地理解计算机底层的原理。(本题取⾃⼴西师范⼤学2017年硕⼠研究⽣招⽣考试试题编程题部分。)
【源码运⾏环境】
操作系统:Windows 10
编译环境:Dev C++(基于C99标准)
【原理】
⼗进制整数转换为⼆进制整数采⽤"除2取余,逆序排列"法。
具体做法是:
1、⽤2整除⼗进制整数,可以得到⼀个商和余数;
2、再⽤2去除商,⼜会得到⼀个商和余数;
3、如此进⾏,直到商为⼩于1时为⽌;
4、然后把先得到的余数作为⼆进制数的低位有效位,后得到的余数作为⼆进制数的⾼位有效位;
5、依次排列起来。
【例⼦】
以⼗进制14转换为⼆进制1110为例:
初始值:14
1:14 / 2 = 7 ————>余0
2:7  /  2 = 3 ————>余1
3:  3  /  2 = 1  ————>余1
4:  1  /  2 = 0  ————>余1
反向输出:1110即为所求。
【源码实现】
/*
* ⽅法名:converse
* 作⽤:⽤于将⼀个⼗进制数字转换为⼆进制数的递归实现数学二进制的算法
* 参数:sum(商)i(位数)
* 返回值:rest(以int保存的⼆进制数)
* author: WellLee
* 最后⼀次修改时间:2018年12⽉6⽇ 19:02:32
*/
int converse(int sum, int i)
{
int rest;                  //余数
if(sum <= 1 ){  //递归结束条件
return i * sum;    //结束返回值
}
rest = sum % 2;            //先取余数
sum /= 2;                  //求商取整
rest *= i;                //进位操作(包括递归部分的i*10)
return rest + converse(sum, i * 10); // 递归部分
}
【总结】
本⽂提出了⼀种利⽤递归保存结果求⼆进制转⼗进制的C语⾔程序实现,实现该功能的程序并不⽌⼀种,仅供参考。也借此机会锻炼了⾃⼰关于递归程序设计的思想。
【参考⽂献】
⼴西师范⼤学2016年硕⼠研究⽣招⽣考试《806/826 数据结构》试题

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。