mt-procode

总访问量次
  • 主页
  • 归档
所有文章 关于我

mt-procode

  • 主页
  • 归档

十进制向二进制转化的两种方法

2020-04-22
总阅读量次

写在前面

解决此类问题的方法可能不止以下这两类方式(十进制转化为其它进制也是同样的道理,在此仅以转化为二进制为例),在此只对两类方式的一种解法加以解释,其余方式暂不再此次讨论范围内。


方式一:递归

递归算法优势在于对某些特定问题的求解上思路清晰,结构简单,书写方便,但缺点也十分明显,即时间效率非常差,但还是在此写出递归算法的具体实现源码,封装成函数仅供参考。

源代码
1
2
3
4
5
6
7
8
9
10
11
12
//这里的函数由于结构问题没有对于 0 的判定能力,需要在主函数内加入判定语句
void dec2Bin1(int value){
if (value==0)
return ;
else
{
//依次获得需要的被求余的数
dec2Bin1(value/2);
//依次输出求余后的数
cout << value%2;
}
}

测试样例:
test


方式二:非递归

对问题的求解一般采用非递归即循环的方式解决,优势在于执行效率比递归算法高得多,但在一些问题的求解上上循环结构比较复杂,故还是不能完全取代递归算法,这里依然用函数封装仅供参考。

源代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string dec2Bin2(int value){
string s;
if(!value)
return (s += "0");
else{
while(value/2){
if(value%2)
s += "1";
else
s += "0";
value /= 2;
}
s += "1";
//string反向迭代器
string str(s.rbegin(),s.rend());
return str;
}
}

测试样例(与之前相同实例同时验证结果的正确性)
test

赏

感谢支持

支付宝
微信
  • C++
  • 算法
  • C++

扫一扫,分享到微信

微信分享二维码
商贩卖pig和电话号码组合两类简单问题的求解
两个有序数组的合并问题
  1. 1. 写在前面
    1. 1.1. 方式一:递归
      1. 1.1.1. 源代码
    2. 1.2. 方式二:非递归
      1. 1.2.1. 源代码
© 2020 mt-procode
Hexo Theme Yilia by Litten
  • 所有文章
  • 关于我

tag:

  • C++
  • 算法
  • 语法
  • 编辑器
  • cmd
  • 类
  • 数据结构
  • C

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

学生党一枚~