软件水平考试

递归函数执行时,其调用和返回控制是利用( )来进行的。A.栈 B.对列 C.数组 D.树

题目
递归函数执行时,其调用和返回控制是利用( )来进行的。

A.栈
B.对列
C.数组
D.树
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。A.函数调用可以嵌套和递归B.函数调用可以作为一个函数的实参C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的形参


正确答案:D
C语言中有规定,函数定义不能再有其他函数,因为函数有返回值,那么函数调用可以嵌套和递归,也可以作为一个函数的实参,但是不能作为一个函数的形参,这是在对一个函数的定义。

第2题:

已知递归函数f的定义如下:

int f(int n){

if(n<= 1)return 1;//递归结束情况f5=5*f3=5*3*f1

else return n*f(n-2); //递归

}

则函数调用语句f(5)的返回值是______。


正确答案:15
15 解析:函数递归调用,f(5)=5*f(3)=5*(3*f(1))=15。

第3题:

●当程序运行陷于死循环时,说明程序中存在 (41) 。在C语言中,函数定义及函数调用应该遵循的原则是 (42) 。以求n!为例,采用递归方式编写的程序相对于递推方式的程序执行效率较低的原因是 (43) 。

(41) A.词法错误

B.静态的语义错误

C.语法错误

D.动态的语义错误

(42) A.可以进行函数的嵌套定义,不可以进行函数的嵌套调用

B.不可以进行函数的嵌套定义,可以进行函数的嵌套调用

C.既不能进行函数的嵌套定义,也不能进行函数的嵌套调用

D.既可以进行函数的嵌套定义,也可以进行函数的嵌套调用

(43) A.递归程序经编译后形成较长目标代码,所以需要较多的运行时间

B.递归程序执行过程中重复存取相同的数据占用了较多的时间

C.递归程序执行时一系列的函数调用及返回占用了较多的时间

D.递归程序执行时多次复制同一段目标代码占用了较多的时间


正确答案:D,B,C
【解析】语法错误和词法错误应该在分析过程中分析出来,静态的语义错误不会造成死循环,而动态的语义错误很容易造成程序的死循环。常见错误有循环结束条件错误。C语言允许在一个函数中调用另一个函数,在第二个函数中调用第三个函数,即允许嵌套调用;但是它不允许在一个函数中定义另外的函数,即不允许嵌套定义。递归程序因为在执行过程中需要不断地进行函数调用及返回,即不断地执行上下文切换和反复地进行入栈、出栈操作,所以它们需要较大的时间开销。

第4题:

以下对C语言函数的有关描述中,正确的是( )。

A.C函数可以递归调用也可以嵌套调用

B.在C中,调用函数时,只能把实参值传给形参,形参值不能返回给实参

C.没有返回值的函数不能被使用 .

D.C程序中有调用关系的所有函数必须放在同一个源程序文件中


正确答案:A
选项B),形参值的改变不会影响实参,但形参值可以作为返回值返回给实参。选项c),函数可以没有返回值,即返回值类型为void。选项D),函数可以定义在不同的文件中,只要调用前包含被调用函数所在的文件即可。

第5题:

已知递归函数fun的定义如下: int fun(int n) { if(n<=1)return 1;//递归结束情况 else return n*fun(n-2);//递归 } 则函数调用语句fun(5)的返回值是( )。

A.5

B.12

C.15

D.30


正确答案:C
解析:递归函数fun被定义为含有参数int n返回整型.其中 fun函数递归调用本身,当n=1时,fun返回1,如果大于1那么执行n*fun(n-2)。所以,当n等于5时,执行5*fun(3);当n等于3时继续调用fun,3*fun(1),即fun(5)=5*(3*fun(1)),答案为15。

第6题:

( 8 )已知递归函数 f 的定义如下:

int f(int n)

{

if (n <= 1) return 1; // 递归结束情况

else return n * f(n-2); // 递归 }

则函数调用语句 f(5) 的返回值是 【 8 】 。


正确答案:

第7题:

在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则

A.称为函数的直接递归调用

B.称为函数的间接递归调用

C.称为函数的循环调用

D.C语言中不允许这样的递归调用


正确答案:B
解析:在C语言中,所谓函数的递归是在指在调用一个函数的过程中,又出现了直接或间接地调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用。显然题目中所说得函数调用为函数的间接递归调用。

第8题:

已知递归函数f 的定义如下:

int f (int n)

{

If(n<=1)return 1;//递归结束情况

else return n*f(n-2);//递归}则函数调用语句f(5)的返回值是( )。


正确答案:

1  

第9题:

一个C++程序由函数A( ),B( ),C( )和函数P( )构成,在函数A( )中分别调用了函数B( )和函数C ( ),在函数B( )中调用了函数A( ),且在函数P( )中也调用了函数A( ),则可以说

A.函数B( )中调用的函数A( )是函数A( )的间接递归调用

B.函数A( )被函数B( )调用是直接递归调用

C.函数P( )直接递归调用了函数A( )

D.函数P( )中调用的函数A( )是函数P( )的嵌套


正确答案:A
解析:本题考察递归调用。递归调用分为直接递归和间接递归。A()属于间接递归。

第10题:

在函数体中把出现调用自身函数的情况称为()。

A、非递归调用

B、直接递归调用

C、间接递归调用

D、末尾递归调用


正确答案:B

更多相关问题