C语言之用递归进行十进制转二进制(图解)
文章目录
- 前言
- 一、用二整除法
- 1.原理(图解)
- 如图:
- 2.使用图片
- 3.代码
- 二、对照表比较法
- 1.原理(图解)
- 如图:
- 2.使用图片
- 3.代码
- 总结
前言
在学习算法的过程中,我们会遇到如何把十进制转二进制的问题,针对如何用C语言递归的方式,我有以下两种解决方法。
一、用二整除法
1.原理(图解)
用2整除十进制整数,得到一个商和余数;再用2去除商,又会得到一个商和余数,如此重复,直到商为小于1时为止,然后把先得到余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,以此排列起来。
如图:
即每一步取当前数除余2所得余数
且下一步取上一步数除2作为当前数
以此类推,直至当前数为0,最终倒叙输出。
2.使用图片
3.代码
#include <iostream>
using namespace std;
void two(int n) {if(n!=0) {two(n/2);printf("%d",n%2);}
}
int main() {int n;cin >> n;if(n==0) printf("0\n");else {two(n);printf("\n");}return 0;
}
二、对照表比较法
1.原理(图解)
从左至右依次开始:100比128小,取0;100比64大,取1,剩36;36比32大,取1,剩4;4比16小,取0;4比8小,取0;4不比4小,取1,剩0;0比2小,取0;0比1小,取0。最终得:01100100。
如图:
2.使用图片
3.代码
#include <iostream>
using namespace std;
void two(int n,int max) {if(max!=0) {if(n>=max) {printf("%d",n/max);two(n-max,max/2);} else {printf("0");two(n,max/2);}}
}
int main() {int n,max=1;cin >> n;//输入十进制数while(max <= n) { //max为第一个2的幂大于n的数max*=2;}if(n==0) printf("0\n");else {two(n,max/2);printf("\n");}return 0;
}
总结
两种方法均有优点,各取所需。以上就是C语言之用递归进行十进制转二进制(图解)的全部内容,感谢阅读。
C语言之用递归进行十进制转二进制(图解)相关推荐
- c语言十进制转八进制递归,C语言之利用递归将十进制转换为二进制
#include #include void change2(int num) { if (num != 0) { change2(num / 2); printf("%d", n ...
- 【C语言学习记录01】使用递归实现十进制转二进制
前言 我本人也在慢慢学习C语言,看的是C Primer Plus这本书,为了激励自己学习下去,所以会慢慢发分享一些学习心得,也当是记录一下吧,以后也好回顾回顾,本人很菜,高手们不要嘲笑,有问题欢迎指点 ...
- C语言递归解决十进制转换二进制
1.解题思路 在纸上做过十进制转二进制的朋友应该都用的都是除二取余的方法,写出每一次的余数知道0为止再从下至上依次读取余数即可,类似下图 根据观察可知十进制转换为二进制的问题属于我上一篇文章所提到的& ...
- 带小数十进制转二进制--图解
我们常见的是纯整数十进制转二进制,而对小数部分的转换不常提及.以下帮助大家梳理 (xxx.yyy)10xxx为整数部分,yyy为小数部分(xxx.yyy)_{10}\\ xxx为整数部分,yyy为小数 ...
- 递归实现十进制转二进制
输入一个整数n,将其转换为二进制后输出.要求定义并调用函数dectobin(n),它的功能是输出n的二进制. 先给出代码: #include<stdio.h> int pows=1; in ...
- 用递归实现十进制转换为二进制
#include <stdio.h> void zhuanhuan(int i) {int b; b = i%2;if(i<2){printf("%d",b);} ...
- python递归十进制转化二进制_什么是递归?用十进制转二进制的Python函数示例说明...
先上用Python写的十进制转二进制的函数代码: def Dec2Bin(dec): result = '' if dec: result = Dec2Bin(dec//2) return resul ...
- 二进制转换 html,十进制转二进制例题
十进制转二进制 多举几个例子(先谢了.) 十进制转二进制简单的来讲,就是把一个十进制的数÷2,一直÷,直到不能除了,就像是1÷2,在十进制转二进制的时候,它的答案为0,没有余数就写0,然后把前面的余数 ...
- 【递归实现】c语言 十进制转二进制(固定八位显示)
题目要求: 递归实现:求整数的二进制位倒序后的整数 //递归将十进制转化为二进制 #include <stdio.h> int a[8] = {0},i=0,j=0; void fun(i ...
最新文章
- re2正则表达式匹配引擎的c接口版本cre2的中文使用手册
- Lighttpd 配置与性能优化
- c++:栈的基本操作+实例:迷宫求解
- set nocount on
- jieba分词错误_如何掌握分词技术,你需要学会这些
- COM 与 COM+ 区别
- 转:10个常见的 Android 新手误区
- 博客资源网小程序带流量主激励视频收益
- jQuery EasyUI API 中文文档 - 组合表格(ComboGrid)
- 程序员是不是当代最好的职业?
- gitlab主备同步_gitlab实现主备切换集群
- windows环境elasticsearch安装IK分词器
- Transactions
- 一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!
- 由13位数字组成的中国标准书号校验码计算实例
- “举直错诸枉,能使枉者直”在个人成长中的意义
- uniapp生成商品分享海报
- Syncfusion Essential Studio Enterprise 2023.1 Crack
- PostgreSQL ----- CHECK 约束
- 29.typedef