在追索权中将十进制数转换为八进制数(C#)

时间:2016-10-23 13:05:02

标签: c# function recursion

我有一个算法将数字从十进制转换为八进制,但是while循环中的算法我需要将其转换为递归函数。 这是while循环中的算法:

int octalNumber = 0, i = 1;

        while (x != 0)
        {
            octalNumber += (x % 8) * i;
            x /= 8;
            i *= 10;
        }
        return octalNumber;

有人可以帮我转换为递归函数吗?

1 个答案:

答案 0 :(得分:2)

这将完成这项工作:

public int ToOctal(int x)
{
    if(x == 0)
    {
        return 0;
    }
    return x % 8 + 10 * ToOctal(x / 8);
}

请注意,在递归算法中,如果x等于0,我们将停止递归调用并返回0,而在循环中我们将保持迭代直到x将为零,在两种算法中我们将通过所有x的方式数字是逻辑上相同的

还有一件事,虽然你必须使用i变量来知道新数字的位置,但在递归算法中我们不需要这个变量而是我们将为此目的使用递归调用的好处叠加。