C语言之用递归进行十进制转二进制(图解)
生活随笔
收集整理的這篇文章主要介紹了
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语言之用递归进行十进制转二进制(图解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《天天向上》聚焦首个碳中和主题公园 |
- 下一篇: 计算机毕业设计Java微博系统网站(源码