日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言之用递归进行十进制转二进制(图解)

發布時間:2023/12/29 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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语言之用递归进行十进制转二进制(图解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。