0

所以我在创建递归函数以将数字从基数 2-10 转换为基数 2-16 时遇到了麻烦。我需要它返回一个字符串(显然,由于基数大于 10)。

这是我的功能:

main 会这样称呼它:

answer = baseConversion(101, 10, 2);

我有十六进制作为常量字符:

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 语句和递归调用的帮助。我是否需要在函数中声明一个字符数组,然后将我从 hex[r] 获得的字符附加到它?如果是这样,我该怎么做,因为我无法更改参数

4

1 回答 1

2
  • ints没有基础,他们只有价值观。你如何显示,或用字符串表示,有基础。currBase因此,除非您从要转换的值的字符串表示开始,否则使用是没有意义的。
  • baseConverter, 被定义为返回一个字符串;由于没有为该字符串传递空间,因此必须分配它。
  • 因此,对于递归的情况,你会打电话baseConverter给你一个数字的其余部分的字符串,并用它来制作一个的字符串(你需要分配),确保释放你从递归获得的字符串完成后打电话。
于 2014-10-18T23:18:22.033 回答