【发布时间】:2020-05-17 06:20:09
【问题描述】:
如果问题已经提出,请随意复制这篇文章,我还没有找到与此相同的文章
据我所知,return 不需要在 void 函数中,例如:
void ex () {printf ("Hi\n");}
但是,如果void 递归 中没有return 可以吗?我在想的是,程序将继续调用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;
}
输出,
1
2
3
4
5
6
7
8
9
10
没有最后一个return,它也可以正常工作,还是我错过了什么?
【问题讨论】:
-
您需要来自
if的return,因为它是您的停止条件。第二个return你不需要,因为它不会影响代码。没有return,函数结束并返回给调用者。 -
所以问题是,是否需要在 void 函数的末尾使用
return语句?不,这不对; here's 更多细节。 -
@LastSecond959 递归函数和非递归函数的主体编译方式没有区别。返回类型是函数的区别。
-
有时我像编译器一样工作,不喝咖啡就特别忽略 cmets:P 无论如何,我的 cmets 是关于删除所有返回的,就像其他 cmets 提到的那样,它不需要。
-
@ROOT 哈哈,你不是唯一一个 XD。还是谢谢。