具有递归功能的10基数的基数转换器 - C.

时间:2012-04-29 20:59:44

标签: c function recursion process base-conversion

我尝试从10个基数转换任意数字基数。在我将两个数字乘以相同的基数之后,但该函数应该是递归的。

    double convert(int number,int base)
{
    int digit = 1;
    double sum=0;
    int i=0;
    int figure;
    double end;
    if(base==10)
        return number;

    else
    {
        figure = (digit % (digit * 10) - number % digit) / digit;
        end=pow(base,i);
        sum+=figure*end;
        ++i;
        digit *= 10;

        convert(figure,base);

    }
return sum;
}

但我在其他方面感到困惑,它不起作用。我该如何解决?有什么优惠? 感谢..

2 个答案:

答案 0 :(得分:3)

E.g。

#include <stdio.h>

int convert(int number,int base){
    if(number == 0 || base==10)
        return number;

    return (number % base) + 10*convert(number / base, base);
}

int main () {
    int i;
    for(i=2;i<=10;++i)
        printf("%d is %d base(%d)\n", 100, convert(100, i), i);
    return 0;
}

答案 1 :(得分:0)

static string ToBase(int n, int @base)
    {
        Func<int, string, string> x = null;
        return (x = (i, j) => 
        {
            if (i == 0)
            {
                return j;
            }
            return x(i / @base, i % @base + j);
        })(n, string.Empty);
    }