将十进制数转换为八进制数(C#)
我有一个将数字从十进制转换为八进制的算法,但该算法在while循环中,我需要将其转换为递归函数。 这是while循环中的算法:将十进制数转换为八进制数(C#),c#,function,recursion,C#,Function,Recursion,我有一个将数字从十进制转换为八进制的算法,但该算法在while循环中,我需要将其转换为递归函数。 这是while循环中的算法: int octalNumber = 0, i = 1; while (x != 0) { octalNumber += (x % 8) * i; x /= 8; i *= 10; } return octalNumber; 有人能帮
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变量来知道新数字的位置,但在递归算法中,我们不需要此变量,而是使用递归调用堆栈的好处来实现此目的。这将完成以下工作:
public int ToOctal(int x)
{
if(x == 0)
{
return 0;
}
return x % 8 + 10 * ToOctal(x / 8);
}
请注意,在递归算法中,如果x等于0,我们将停止递归调用并返回0,而在您的循环中,我们将不断迭代直到x为0,在这两种算法中,我们传递所有x位的方式在逻辑上是相同的还有一件事,虽然您必须使用i变量来知道新数字的位置,但在递归算法中,我们不需要这个变量,而是使用递归调用堆栈的好处