为什么将十进制转换为二进制的递归方法比使用,返回字符串的迭代方法要快?

Theuglymonkey

我创建了两个函数,它们接受一个十进制数字并返回该数字的二进制表示形式。我选择了一种简单的方法,通过一些简单的数学运算,将1和0串联到一个字符串上。我创建了一个迭代和递归的方法来做到这一点。然后我用老师给我的计时器课给这两种方法计时。事实证明,我的递归方法比迭代方法快大约两倍。为什么会这样呢?

string CConversion::decimalToBinaryIterative(int num)
{
   string ss;
   while(num > 0)
   {
        if  (num%2 != 0)
        {
            ss = '1' + ss;
        }
        else
        {
            ss = '0' + ss;
        }
        num=num/2;
    }
    return ss;
}
string CConversion::decimalToBinaryRecursive(int num)
{
    if(num <= 0)
    { 
        return "";
    } 
    else 
    {
       if  (num%2 != 0)
       {
            return decimalToBinaryRecursive(num/2) + '1';
       }
        else
        {
            return  decimalToBinaryRecursive(num/2) + '0';
        }
    }

}
谢尔盖·卡里尼琴科(Sergey Kalinichenko)

将字符附加到astd::string之前比先添加一个便宜,因为如果字符串的容量允许,则可以在不复制字符串的情况下进行附加。

但是,前置总是需要整个字符串的副本。

如果您将迭代代码更改为此

string ss;
while(num > 0)
{
    if  (num%2 != 0)
    {
        ss = ss + '1';
    }
    else
    {
        ss = ss + '0';
    }
    num=num/2;
 }
 return string(ss.rbegin(), ss.rend());

时间应该几乎相同,否则迭代应该变得更快。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将二进制字符串转换为十进制

来自分类Dev

将二进制字符串转换为十进制时结果错误

来自分类Dev

使用递归将二进制数字的字符串转换为十进制数字...

来自分类Dev

二进制字符串到十进制整数转换器

来自分类Dev

将二进制数转换为十进制的方法

来自分类Dev

将字符串中的十进制转换为二进制时出错

来自分类Dev

如何将二进制补码二进制字符串转换为负十进制数字?

来自分类Dev

将十进制浮点数转换为二进制并返回

来自分类Dev

需要将二进制形式的1和0的字符串转换为十进制数

来自分类Dev

使用array.reduce方法将二进制数字数组转换为十进制

来自分类Dev

将十进制转换为二进制的最快方法-Javascript

来自分类Dev

使用c ....中的字符串将十进制转换为二进制...陷入某些概念错误

来自分类Dev

将十进制转换为二进制的C ++循环的逻辑是什么

来自分类Dev

JavaScript-以字符串形式将十进制数转换为4位二进制数

来自分类Dev

Arduino C / C ++将二进制字符串转换为十进制

来自分类Dev

为什么将十进制转换为二进制的递归方法比使用,返回字符串的迭代方法要快?

来自分类Dev

将十进制/整数转换为二进制-如何以及为什么以这种方式工作?

来自分类Dev

在Java中将大二进制字符串转换为十进制

来自分类Dev

使用递归将二进制数字的字符串转换为十进制数字...

来自分类Dev

将二进制字符串转换为十进制

来自分类Dev

将十进制浮点数转换为二进制并返回

来自分类Dev

C ++从字符串输入将二进制转换为十进制

来自分类Dev

Java:将二进制搜索树转换为字符串的方法

来自分类Dev

连接从十进制转换为二进制的二进制字符串

来自分类Dev

二进制字符串未在我的 Arduino 上正确转换为十进制

来自分类Dev

在 Spark/Scala 中将一列从十进制转换为二进制字符串

来自分类Dev

将字符串二进制转换为整数十进制

来自分类Dev

如何使用递归函数将十进制数转换为二进制数?

来自分类Dev

我通过迭代加法和检查单个字符(见代码)将二进制数转换为十进制数的方法有什么问题?

Related 相关文章

  1. 1

    将二进制字符串转换为十进制

  2. 2

    将二进制字符串转换为十进制时结果错误

  3. 3

    使用递归将二进制数字的字符串转换为十进制数字...

  4. 4

    二进制字符串到十进制整数转换器

  5. 5

    将二进制数转换为十进制的方法

  6. 6

    将字符串中的十进制转换为二进制时出错

  7. 7

    如何将二进制补码二进制字符串转换为负十进制数字?

  8. 8

    将十进制浮点数转换为二进制并返回

  9. 9

    需要将二进制形式的1和0的字符串转换为十进制数

  10. 10

    使用array.reduce方法将二进制数字数组转换为十进制

  11. 11

    将十进制转换为二进制的最快方法-Javascript

  12. 12

    使用c ....中的字符串将十进制转换为二进制...陷入某些概念错误

  13. 13

    将十进制转换为二进制的C ++循环的逻辑是什么

  14. 14

    JavaScript-以字符串形式将十进制数转换为4位二进制数

  15. 15

    Arduino C / C ++将二进制字符串转换为十进制

  16. 16

    为什么将十进制转换为二进制的递归方法比使用,返回字符串的迭代方法要快?

  17. 17

    将十进制/整数转换为二进制-如何以及为什么以这种方式工作?

  18. 18

    在Java中将大二进制字符串转换为十进制

  19. 19

    使用递归将二进制数字的字符串转换为十进制数字...

  20. 20

    将二进制字符串转换为十进制

  21. 21

    将十进制浮点数转换为二进制并返回

  22. 22

    C ++从字符串输入将二进制转换为十进制

  23. 23

    Java:将二进制搜索树转换为字符串的方法

  24. 24

    连接从十进制转换为二进制的二进制字符串

  25. 25

    二进制字符串未在我的 Arduino 上正确转换为十进制

  26. 26

    在 Spark/Scala 中将一列从十进制转换为二进制字符串

  27. 27

    将字符串二进制转换为整数十进制

  28. 28

    如何使用递归函数将十进制数转换为二进制数?

  29. 29

    我通过迭代加法和检查单个字符(见代码)将二进制数转换为十进制数的方法有什么问题?

热门标签

归档