递归检查数字的所有数字是否不同

时间:2016-08-19 06:37:55

标签: c++ recursion

如果整数的所有数字在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 :(得分:1)

你可以记住,你已经看过哪些数字。例如,使用长度为10的bool数组。在第一次调用函数时,所有条目都是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在每个步骤中调用此函数。