我正在尝试编写一个递归函数来检查用户是否输入了一个包含所有偶数位的数字。
我的逻辑有什么问题?当我尝试使用“556”时,结果是 1。
int main()
{
int num;
int *result;
printf("Enter a number: ");
scanf("%d", &num);
allEven(num, &result);
printf("allEven(): %d", result);
}
void allEven(int number, int *result)
{
if ((number % 10) % 2) // if the last digit is odd
{
*result = 0;
}
else
{
*result = 1;
if ((number / 10) != 0) //not the last digit to evaluate, we call the function again.
{
allEven((number / 10), &result);
}
}
}
最佳答案
allEven((number/10), &result);
应替换为
allEven((number / 10), result);
因为 allEven
需要 int *
类型的第二个参数,而 &result
是 int **
另外 int *result
应该是 int result = 1
如果您使用正确的警告标志 -W -Wall
进行编译,例如在 gcc 上(最好使用 -O2
),您应该会收到正确的警告以更正您的代码。
关于c - 检查 int 变量中的所有数字是否为偶数的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28713434/