2016-08-19 20 views
-3

如何檢查遞歸如果一個整數所有的數字都是不同的號碼在C++遞歸檢查,如果一個號碼的所有數字都不同

void Check(int n) 
{ 

    if (n < 10) 
     return; 
    else 
    { 
     bool eq = !(n % 10 == ((n/10) % 10)); 
     if (eq == true) 
     { 
      Check(n/10); 
     } 
    } 
} 
+1

爲什麼遞歸 - 可能但不自然?這學校做作業嗎? –

+0

顯示你的第一次嘗試 –

+0

我第一次嘗試是要經過所有的數字,但我只能比較兩個連續的數字,但我不能與其他所有比較一個數字,是的,它是重要的功課 –

回答

1

你能記住,這數字你已經看到了。例如,通過使用長度爲10的布爾數組。在函數的第一次調用時,所有條目都是false。在每次遞歸調用中,您將array[n%10]設置爲true。如果它已經是true,那麼你找到了一個重複的數字,否則不是。

如果你只想使用遞歸,您可以定義一個第二遞歸函數:

bool checkIfDigitApearsInNumber(int n, int digit) { 
    if (n == 0) { 
     return false; 
    } else { 
     if (n % 10 == digit) { 
      return true; 
     } else { 
      return checkIfDigitApearsInNumber(n/10, digit); 
     } 
    } 
} 

在你的功能Check,你要調用此函數與n/10, n%10每一步。

相關問題