使用递归将一个基数转换为另一个基数

时间:2014-10-18 23:09:57

标签: c string recursion base-conversion

因此我无法创建递归函数以将数字从2-10基数转换为2-16基数。我需要它来返回一个字符串(显然,由于基数大于10)。

这是我的功能:

main会称之为:

answer = baseConversion(101, 10, 2);

我将hex作为常量字符:

const char Hex[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

char * baseConverter(int number,int currbase, int base){

    if(currbase != 10){

        number = base10Converter(number, currbase);  //converts the number to base of 10 

        currbase = 10;
    }

    if(number == 0 || base==10){

        return number;

    }

    int r = number%base;

    printf("%c", Hex[r]);

    //return (number % base) + 10*baseConverter(number /base, currbase, base); // this gives the answer as an integer.
    return Hex[r]+ && baseConverter(number /base, currbase, base) // I dont know what to add here to add the characters together 
}

我需要帮助我的return语句和递归调用。 我是否需要在函数中声明一个char数组,然后将我从hex [r]中得到的字符追加到它?如果是这样,我如何去做,因为我无法改变参数

1 个答案:

答案 0 :(得分:2)

  • int已经完成了基础,他们只有价值观。如何显示或用字符串表示具有基础。因此,除非以您要转换的值的字符串表示开头,否则有currBase是没有意义的。
  • baseConverter被定义为返回一个字符串;因为它没有为该字符串传递空间,所以必须分配它。
  • 因此,对于递归情况,您可以调用baseConverter为该数字的其余部分提供一个字符串,并使用该字符串创建 new 字符串(你需要分配),确保在你完成后释放你从递归调用中得到的字符串。