‘壹’ c语言中,函数是否可以直接或间接调用自己!!求大神!!求解析!!!
可以.C语言中,任何函数都可以直接或间接地被自己或其他函数调用,包括main函数(注意我说的是C,不是C++)
例如,典型的利用main递归实现逆序输出
#include<stdio.h>
intmain()
{
intc;
if((c=getchar())!=EOF)//EOF用Ctrl+Z或者F6
{
main();
}
printf("%c",c);
return0;
}
‘贰’ c语言的递归是函数调用函数自己,是不是和while循环相似它可以解决什么问题
递归是自己调自己再调自己再调自己。。。。直到某个条件退慧贺山出。
循环是自己反复调别人。
用循环能实现的,递归一般可以实现,但是能用递归实现的,拍模循环不一定能。
递归的优点是代码简洁,清晰。对于某些问题,如果不用递归,代码前中将会非常难看。
请采纳,谢谢
‘叁’ c语言在一个函数内部调用另一个函数的调用方法称为___
在一个函数部调用另一个函数的调用方式称为嵌套调用,嵌套调用就是某个函数调用另外一个函数(即函数嵌套允容许在一个函数中调用另外一个函数)。
#函数的嵌套调用:在一个函数内部调用另一个函数
deffn1():
pass
deffn2():
fn1() #函数的嵌套调用
deffn3():
fn2() #函数的嵌套调用
fn3()
(3)c语言里函数调用自己叫什么扩展阅读:
调用注意事项:
一、前提条件:
1、两个文件必须编入同一个可执行文件;
2、被调用函数必须是全局函数,即不能是static函数。如果有static修饰,那么必须写在头文件中,并被另一个文件引用。
二、声明:
1、可以声明在头文件中,并在调用文件中引用该头文件;
2、可以直接在调用文件声明,形式为
externRET_TYPEFUNC_NAME(PARAM_LIST);
其中extern非必须,但一般都会写上,表示这个是其它文件定义的。
‘肆’ C语言中能否在一个自定义函数中调用另一个自定义函数
当然可以!
C语言程序的最基本的模块就是函数,
该程序规定:任意函数都可以调用其它任意一个函数,包括函数本身;
1、函数调用自己本身, 这种称为递归;
通过递归,计算1+2+3+...+n值的代码:
‘伍’ C语言函数自己怎么调用自己
这个叫递归,函数自己调用自己
‘陆’ C语言调用自身的函数
其实是这样的,主调函数会继续执行被调函数之后的语句。
假设第一次执行travel,判断root!=NULL,则会第二次执行travel,此处是travel(root->l);。
第二次执行的travel语句肯定是要返回的,当它返回之后,继续执行第一次travel中的print_s(&root->data);。
然后再执行第三次travel,此处是travel(root->r);。
每次travel函数在if条件满足,或者下层travel(root->r);返回之后,才会返回。
同理继续向下递推。
‘柒’ c语言中,一个函数可以调用其他函数,不能调用自己
错,函数可以调用自己,函数自己调用自己的这种调用方式称为函数的递归调用,我给你举个列子:
int calc(int num){
if(num==0){
return 0;
}else{
return num*calc(num-1);
}
}
这个函数就是利用递归求任意一个整数的阶乘
‘捌’ C语言中递归函数是,非递归函数是能否举例子
直接或间接调用自已的函数就是递归函数,否则为非递归函数。如:
unsignedfun(unsignedx){
if(x==1||x==0)
return1;
returnx*fun(x-1);
}
这个函数的体中出现了调用自己的语句fun(x-1);,所以是递归函数。
‘玖’ C语言的函数调用是递归吗
“递归”外在表现出来的形式,是:函数自己调用自己。也就是说:如果我们定义了一个函数fun(),那么,在fun函数体中,fun这个函数自己调用自身 ,这就是表示:递归调用。
我们来看一下,下面这个程序段:
上述C语言程序中,第7行到第10行,就是使用“循环”的方式,来实现从0一直累加到100的和。大部分情况下,“循环”与“递归”之间,都可以相互转换。
在使用递归的时候,需要注意以下两点:
需要有一个“递归出口”,如果没有一个出口,那么递归就会一直执行下去,一直到将“栈空间”占满为止。那时程序就会崩溃,所以一定是要有一个“递归出口”。
如果所要执行的次数比较多,可以尽量选择用“循环”的方式,因为使用“递归”的方式,程序执行的速度会比较慢。
‘拾’ C语言中函数怎么自己调用自己
一,函数调用的一般形式为:
函数名(实参列表);
实参可以是常数、变量、表达式等,多个实参用逗号,分隔。
在c语言中,函数调用的方式有多种,例如:
在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实参列表中各个参数是自左向右使用呢,还是自右向左使用。对此,各系统的规定不一定相同。
【示例】在vc6.0下运行以下代码。
运行结果:
8
7
6
7
可见vc
6.0是按照从右至左的顺序求值。如果按照从左至右求值,结果应为:
9
10
9
8
函数的嵌套调用
函数不能嵌套定义,但可以嵌套调用,也就是在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用,即在被调函数中又调用其它函数。
【示例】计算sum
=
1!
+
2!
+
3!
+
...
+
(n-1)!
+
n!
分析:可以编写两个函数,一个用来计算阶乘,一个用来计算累加的和。
#include
//求阶乘
long
factorial(int
n){
int
i;
long
result=1;
for(i=1;
i<=n;
i++){
result
*=
n;
}
return
result;
}
//
求累加的和
long
sum(long
n){
int
i;
long
result
=
0;
for(i=1;
i<=n;
i++){
//嵌套调用
result
+=
factorial(n);
}
return
result;
}
int
main(){
printf("1!+2!+...+9!+10!
=
%ld\n",
sum(10));
return
0;
}
二,有些自定义函数可能会被频繁的调用,所以写在一个c文件里是不太方便的。应该把这些自定义的函数写在一个c文件里,同时在一个头文件.h文件里声明。主函数可以通过引用该头文件然后调用需要的自定义函数。
1,举例:在头文件(.h)里声明自定义函数
2,在一个c语言文件里写下自定义函数的实现
3,在主函数中调用自定义函数
4,最后编译所有的涉及到的c文件,头文件可以不管