是否有必要将 return 置于 void 递归中?

Las*_*959 3 c recursion

如果问题已经问过,请随意将此帖子作为重复,我还没有找到与此相同的帖子

据我所知,没有必要returnvoid 函数中,例如:

void ex () {printf ("Hi\n");}
Run Code Online (Sandbox Code Playgroud)

但是,是不是很好,如果没有return一个void 递归?我在想的是,程序会一直调用func (num-1)直到它到达0并返回,所以它不会打印0到输出,我需要return在函数的末尾,所以在递归调用完成后,你回到以前的func ()直接呼叫者。

这是代码,

#include <stdio.h>

void func (int num)
{
    if (!num) return;
    func (num-1);
    printf ("%d\n", num);

    return;             //Is it necessary to put return here?
}

int main ()
{
    func (10);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出,

1
2
3
4
5
6
7
8
9
10

Run Code Online (Sandbox Code Playgroud)

没有 last return,它也可以正常工作,还是我错过了什么?

ike*_*ami 6

具有返回类型的函数void不需要显式return. 简单地到达函数的末尾将正确返回。

对于也是递归的 void 函数也没有什么不同。return函数中的第一个是必需的,因为您希望它在到达函数末尾之前返回,但第二个不是必需的。