【问题标题】:Convert decimal number to octal number in recourse ( C# )在追索权中将十进制数转换为八进制数(C#)
【发布时间】:2017-03-05 08:02:58
【问题描述】:

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

int octalNumber = 0, i = 1;

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

有人可以帮我把它转换成递归函数吗?

【问题讨论】:

    标签: c# function recursion


    【解决方案1】:

    这样就可以了:

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

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

    还有一件事,虽然您必须使用 i 变量来了解新数字的位置,但在递归算法中,我们将不需要此变量,而是为此目的使用递归调用的好处堆栈。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2011-08-21
      • 2018-05-23
      相关资源
      最近更新 更多