如果整数的所有数字在C ++中都是不同的数字,我如何递归检查
void Check(int n)
{
if (n < 10)
return;
else
{
bool eq = !(n % 10 == ((n / 10) % 10));
if (eq == true)
{
Check(n / 10);
}
}
}
答案 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
在每个步骤中调用此函数。