2016-10-23 70 views
0

我有一個將數字從小數轉換爲八進制的算法,但是while循環中的算法需要將其轉換爲遞歸函數。 這是while循環的算法:在求助(C#)中將十進制數轉換爲八進制數

int octalNumber = 0, i = 1; 

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

有人可以幫我將它轉化成遞歸函數?

回答

2

這將做的工作:

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

注意的是,在遞歸算法,如果x等於0,我們將停止遞歸調用和返回0,而在你的循環中,我們將不斷迭代,直到X將在這兩種算法中,我們將通過所有x位的方式是邏輯相同的

還有一件事,雖然您必須使用i變量來知道新位的位置,在遞歸中算法我們不需要這個變量,相反,我們將使用遞歸調用棧的好處。

相關問題