将十进制数转换为八进制数(c#)
本文关键字:八进制数 十进制数 转换 | 更新日期: 2023-09-27 18:14:22
我有一个将数字从十进制转换为八进制的算法,但是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变量来知道新数字的位置,但在递归算法中,我们不需要这个变量,相反,我们将使用递归调用堆栈的优点来实现这一目的。