将十进制数转换为八进制数(c#)



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

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

谁能帮我把它转换成递归函数?

这就行了:

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

请注意,在递归算法中,如果x等于0,我们将停止递归调用并返回0,而在循环中,我们将继续迭代直到x为0,在这两种算法中,我们传递所有x位的方式在逻辑上是相同的

还有一件事,虽然你必须使用i变量来知道新数字的位置,但在递归算法中,我们不需要这个变量,相反,我们将使用递归调用堆栈的优点来实现这一目的。

最新更新