c - 检查 int 变量中的所有数字是否为偶数的递归函数

标签 c recursion

我正在尝试编写一个递归函数来检查用户是否输入了一个包含所有偶数位的数字。

我的逻辑有什么问题?当我尝试使用“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 * 类型的第二个参数,而 &resultint **

另外 int *result 应该是 int result = 1

Working example here

如果您使用正确的警告标志 -W -Wall 进行编译,例如在 gcc 上(最好使用 -O2),您应该会收到正确的警告以更正您的代码。

关于c - 检查 int 变量中的所有数字是否为偶数的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28713434/

相关文章:

c - g_io_channel + socket = client, GIO 不能正常工作

使用链接器命令文件输入到链接器来有条件地链接程序中的部分?

c - 在 openssl/sha.h 中声明但在共享库中找不到的函数

python - 递归列表函数

Python 3.3 如何将此递归函数转换为纯 yield 循环版本?

c++ - 我的析构函数似乎没有命中树中的每个节点,因为我有内存泄漏,我在这里错过了什么?

无法访问我的结构数组

c - 按 16 个字符对齐文本

php - 从 PHP 中的数组构建多维数组

python - 如何使用递归函数仅将全名列表中的名字应用于新列表