如果递归函数没有return语句,它会返回什么?

Jay*_*esh -2 c recursion return

如果递归函数在单独的句子中没有return语句,则返回什么.

#include <stdio.h>

int rec(int i)
{
    if (i != 3) 
        return rec(++i);
}

int main()
{
    rec(5);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

tas*_*oor 6

C文档返回:

到达任何其他值返回函数的末尾是未定义的行为,但仅当在表达式中使用函数的结果时.

因此,如果任何应该返回值但不返回值的函数以及当我们尝试使用该返回值时,行为是未定义的.在大多数实现中,它返回垃圾.

对于您的情况,您没有使用返回值,因此它在此处无效.此外,您将获得无限递归,因为第一次调用具有5并且在以后的调用中递增.