21xrx.com
2024-11-22 02:20:15 Friday
登录
文章检索 我的文章 写文章
C++递归实现进制转换代码
2023-07-11 15:06:54 深夜i     --     --
C++ 递归 进制转换 代码

进制转换是计算机编程中常用的操作之一,它可以将一种数值的进制表示转换成另外一种进制表示。在C++中,我们可以使用递归函数来实现进制转换,这是一种简单而有效的方法。本文将介绍使用C++递归实现进制转换的代码。

在写代码之前,我们需要了解进制转换的基本知识。进制转换的过程可以分为两个部分:将原始数值转换成10进制数值,再将10进制数值转换成目标进制数值。例如,将二进制数值1010转换成八进制数值的过程可以分为以下两个步骤:

1. 将二进制数值1010转换成10进制数值10;

2. 将10进制数值10转换成八进制数值12。

为了实现这个过程,我们需要编写一个递归函数,它接受三个参数:原始数值string s,原始进制int b1和目标进制int b2。函数的返回值是目标进制表示的数值string。

我们可以按照以下步骤编写递归函数:

1. 如果原始数值s为空,则返回一个空字符串。

2. 将原始数值按照原始进制b1转换成10进制数值n。

3. 将10进制数值n按照目标进制b2转换成目标进制表示的数值s2。

4. 返回s2。

以下是C++代码实现:


#include <iostream>

#include <string>

using namespace std;

char getChar(int n)

{

  if (n < 10)

    return '0' + n;

  else

    return 'A' + n - 10;

}

string convert(int n, int b)

{

  string s;

  while (n >= b)

  {

    s = getChar(n % b) + s;

    n /= b;

  }

  s = getChar(n % b) + s;

  return s;

}

string convertBase(string s, int b1, int b2)

{

  if (s.empty())

    return "";

  int n = 0;

  for (int i = 0; i < s.length(); i++)

  {

    n = n * b1 + (s[i] - '0');

  }

  if (n == 0)

    return "0";

  string s2 = convert(n, b2);

  return s2;

}

int main()

{

  string s = "1010";

  int b1 = 2;

  int b2 = 8;

  string s2 = convertBase(s, b1, b2);

  cout << s << " in base " << b1 << " is " << s2

     << " in base " << b2 << endl;

  return 0;

}

在这个代码中,我们首先定义了一个函数getChar,它用于将数字转换成字符表示。然后,我们定义了一个convert函数,用于将10进制数值转换成目标进制表示的数值。最后,我们定义了convertBase函数,这个函数接受原始数值s、原始进制b1和目标进制b2作为参数,并返回目标进制表示的数值。

在main函数中,我们定义了原始数值s、原始进制b1和目标进制b2,并调用convertBase函数将原始数值按照原始进制转换成目标进制表示的数值。最后,我们输出结果。

总之,在C++中使用递归函数实现进制转换是一种简单而有效的方法。有了递归函数的帮助,我们可以轻松地将一个进制表示转换成另一个进制表示。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复