main函数可否进行递归调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了main函数可否进行递归调用相关的知识,希望对你有一定的参考价值。

参考技术A 在C语言中,main函数可被递归调用
在C++标准中,main函数不可以被递归调用
但是许多C++编译器对标准作出了扩展,使得main函数可以被递归调用。
可以用Visual
C++做个实验
1)用/Tc编译器选项(使用C编译器),main可以递归调用
2)用/Tp(编译C++)和/Ze(启用语言扩展),main可以递归调用
3)用/Tp(编译C++)和/Za(禁用语言扩展),
main不可以递归调用
另外,根据我的经验,90%的C/C++书籍作者对C/C++并不是完全了解。只有看经典书籍才能在技术细节上没有错误或模糊。
参考技术B 一般来说是自己调用自己,一般有两个分支,一个分支是调用自己,还有一个分支是结束条件
如求n!
int
f(int
n)

if(n==1)
//这个是结束条件
return
1;
else
//这个是调用自己的分支
return
n*f(n-1);
还有一个比较复杂一点,是双向调用,也就是a函数调用b函数,b函数在调用a函数
这样循环调用,其实基于这个道理,还有多个函数互相调用,不过这样的情况很少见
但万变不离其宗,每个函数都有两个分支,一个是结束条件,一个是调用函数
无参数函数的函数名后面的括号里是空的,没有参数列表。有时,也在括号里面形式地写上void,表示没有参数。如
int
fun1()

char
fun2或
void
fun3()等。这里的int,char或void是函数的类型,表示相应的函数分别返回int型结果,char型结果或不需要返回结果,不要弄混。
c语言函数中,参数相当自变量,返回值相当于应变量。一个参数相当于一元函数,两个就相当于二元函数等等,返回量只能有一个。
没有参数,即0个参数,是一个特例,这是与数学上的不同。
比如,要从某个设备上读一个数回来,读来的数是返回值,但是可以没有参数,就是说,从默认设备读的情况;如果同样的设备有好几个,那么从哪一个设备读,或者要连续多少个数,就可以作为函数的参数了。
带参数的函数,功能更加强大,也灵活。与此相反,有的函数有参数但是没有返回值。
比如,将一个数据从某个设备发送出去,如果你不关心发送能否成功(默认肯定能成功),那么就没有返回值了。
函数的调用是一级调用一级,可以嵌套。甚至可以自己调用自己(递归)。定义的c函数都是用来被调用的,所以都是被调函数。但是某些函数又调用了其它函数,所以,就是相对的主调函数了。主调用和被调,就类似于
父与子,子与孙,...,是相对的。main()主函数,是一份程序的入口点。你找不到它的主了,其实,只有编译器提供的启动代码最后调用了它。

C语言中,其他文件可否调用文件中的static函数?

参考技术A 不能,C语言中的static函数,内部函数和外部函数,函数一旦定义后就可被其它函数调用。
当一个源程序由多个源文件组成时,在一个源文件中定义的函数能否被其它源文件中的函数调用,C语言又把函数分为两类。
如果在一个源文件中定义的函数只能被本文件中的函数调用,而不能被同一源程序其它文件中的函数调用,

这种函数称为内部函数。
内部函数也称为静态函数,但此处静态static
的含义已不是指存储方式,而是指对函数的调用范围只局限于本文件。
外部函数在整个源程序中都有效,其定义的一般形式为extern

类型说明符

函数名形参表。
C语言中static函数,只能被本文件中的函数所使用,别的c文件中不能访问这个函数,而且你可以在别的文件中定义与之同名的函数,不会互相干扰。

以上是关于main函数可否进行递归调用的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,其他文件可否调用文件中的static函数?

函数可以调用它本身吗?

文法分析与递归下降分析

转深入理解递归函数的调用过程

1113: 递归调用的次数统计(函数专题)

递归函数实例助理解