十进制转二进制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 数据结构》试题
十进制转二进制c语言递归,【数据结构】求十进制转二进制的递归算法相关推荐
- C++语言递归实现求从n个数中选k个进行组合的组合数
C++语言递归实现求从n个数中选k个进行组合的组合数 公式: 需要注意结束条件和递推公式的使用. 递归需要用到函数的思想,此处定义一个fun()函数用于求组合数,记住,一旦调用fun()函数,如:fu ...
- c语言中将十六进制数转换为十进制数程序,C语言中十六进制转十进制两种实现方法...
C语言中十六进制转十进制两种实现方法 C语言 · 十六进制转十进制 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英 ...
- C语言-递归法求斐波拉切数列
目录 1 斐波拉契数列 1 斐波拉契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子 ...
- 最小公倍数递归c语言,递归法求最大公约数和最小公倍数的实现代码
#include using namespace std; int gcd(int a, int b);//声明最大公约数函数 int main() { int num1 = 1; int num2 ...
- 顺序栈十进制转八进制C语言,顺序栈实现十进制跟八进制之间的转换
顺序栈实现十进制和八进制之间的转换 顺序栈实现十进制和八进制之间的转换 (1)首先实现栈的初始化,既申请固定大小的数组空间,存储数据,用到的方法是 int InitStack( struct sq ...
- c语言怎么十进制转八进制,C语言:输入一个十进制转化成八进制输出
2018-06-06 根据输入的年月日,输出该日为该年度的第几周.第几天. //根据输入的年月日,输出该日为该年度的第几周.第几天.星期几. //如输入: 2007,12,1 //则输出: 48z,3 ...
- python递归十进制转化二进制_什么是递归?用十进制转二进制的Python函数示例说明...
先上用Python写的十进制转二进制的函数代码: def Dec2Bin(dec): result = '' if dec: result = Dec2Bin(dec//2) return resul ...
- c语言字符串转成二进制,C语言中字符串如何转换为二进制、八进制、十进制、十六进制...
在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现 相关函数: atof, atoi, atol, st ...
- 十进制转换成十六进制c语言 链栈,C语言 链栈 实现十进制转换二进制,八进制,十六进制...
C语言 链栈 实现十进制转换二进制,八进制,十六进制 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 最后运行结果:代码:#incl ...
- 【C语言】之实现十进制转换为二进制
/** 文件名:二进制转换.c* 功能描述:把10进制数转换为二进制数* 编写人:王廷云 */ #include <stdio.h>#define NR (sizeof(int)*8) / ...
最新文章
- 使用GZIPInputStream和GZIPOutputStream压缩、解压java对象
- webpack打包第三方类库的正确姿势
- 锤子辩论有感——我该如何定义成功
- ielts speaking questions
- 日常使用Git,这些问题你遇到过吗?
- 解开Future的神秘面纱之任务执行
- linux摄像头 自动对焦,基于H3在Linux下驱动OV5640摄像头的方法与流程
- 敏捷开发系列学习总结(4)—Git管理工具sourcetree的安装
- 夏令营讲课内容整理 Day 6 Part 3.
- Fire Net C++
- dcs world f15c教学_苏教版译林牛津高中英语必修1-5选修6-11课文听力MP3音频字幕课件教案试题电子课本优质课教学视频...
- cpolar——安全的内网穿透工具
- 渗透测试报告模板_网站安全测试报告模板该如何写
- Unity 小程序开发
- [源码解析] 深度学习流水线并行 PipeDream(6)--- 1F1B策略
- 读取NTFS的USN(快速检索文件)
- a标签在微信iOS版本的解析没有问题,但是在安卓版就解析不出来
- 英语发音规则---O字母
- java double 出现e_JAVA中double类型运算结果异常的解决
- 串口通信,接收并解析数据的方式
热门文章
- 电脑重装系统找不到计算机了,戴尔电脑重装系统后找不到硬盘或找不到引导设备怎么办?...
- linux redis-trib.rb,redis redis-trib.rb使用密码管理集群
- CorelDraw手表实例实操作让你全面了解技术的综合应用
- 数组按照字母顺序排序
- sm3 算法java_“国密加密算法”SM系列的C#实现方法
- select去重 sqlserver_SQLSERVER 去重
- 郭天祥 10天搞定单片机 (3)数码管+中断
- _crol_和左移的区别
- windows7 优化:readyboost总结
- ValueError: operands could not be broadcast together with shapes、numpy广播错误