21xrx.com
2025-03-29 21:01:17 Saturday
文章检索 我的文章 写文章
C++递归实现进制转换代码
2023-07-11 15:06:54 深夜i     51     0
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++中使用递归函数实现进制转换是一种简单而有效的方法。有了递归函数的帮助,我们可以轻松地将一个进制表示转换成另一个进制表示。

  
  

评论区

请求出错了