(32)设有如下函数定义int fun(int k){ if (k<1) return 0;else if(k==1) return 1;else retur

题目

(32)设有如下函数定义

int fun(int k)

{ if (k<1) return 0;

else if(k==1) return 1;

else return fun(k-1)+1;

}

若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是

A)2

B)3

C)4

D)5

参考答案和解析
正确答案:B
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列函数的运行结果是

main()

{ int i=2,p;

int j,k;

j=i;

k=++i;

p=f(j,k);

printf("%d",p);

}

int f(int a,int b)

{ int c;

if(a>b)c=1;

else if(a==b)c=0;

else c=-1;

return(c);

}

A.-1

B.1

C.2

D.编译出错,无法运行


正确答案:A

第2题:

已知递归函数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。

第3题:

以下程序的输出结果是 【 17 】 。

int fun(int *x,int n)

{ if(n==0) return x[0];

else return x[0]+fun(x+1,n-1);

}

main( )

{ int a[]={1,2,3,4,5,6,7}; printf("%d\n",fun(a,3));}


正确答案:

第4题:

阅读下面程序: include int fun2(int m) { if(m%3==0) return 1; else return 0; }

阅读下面程序:

include <iostream.h>

int fun2(int m)

{

if(m%3==0)

return 1;

else

return 0;

}

void fun1(int m, int &s)

{

int i;

for (i=1; i<m; i++)

if(fun2(i))

S=S*i;

}

void main()

{

int n=9, s=2;

fun1(n, s);

cout<<s<<end1;

}

该程序的运行结果是【 】。


正确答案:36
36

第5题:

( 21 )计算斐波那契数列第 n 项的函数定义如下:

Int fib(int n){

if (n == 0) return 1;

else if (n == 1) return 2;

else return fib(n-1)+fib(n-2);

}

若执行函数调用表达式 fib(2) ,函数 fib 被调用的次数是

A ) 1

B ) 2

C ) 3

D ) 4


正确答案:C

第6题:

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

int f (int n)

{

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

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


正确答案:

1  

第7题:

有如下程序:includeusing namespace std;long fun(int n){if(n>2)return(fun(n-1)+fu

有如下程序: #include<iostream> using namespace std; long fun(int n) { if(n>2) return(fun(n-1)+fun (n-2)); else return 2; } int main() { cout<<fun(3)<<end1; return 0; } 则该程序的输出结果应该是 ( )。

A.2

B.3

C.4

D.5


正确答案:C
解析:主函数中调用fun(3),在fun内部当n>2时,递归调用 fun(n-1)+fun(n-2),否则返回2。所以当n=3时,调用fun(2)+fun(1),即返回2+2,等于4。

第8题:

以下程序的输出结果是______

nt fun(int*x,int n)

{if(n==0)

return x[0];

else return x[0]+fun(x+1,n-1);

}

main()

{int a[]={1,2,3,4,5,6,7};

printf(“%d\n”,fun(a,3));

}


正确答案:

10

第9题:

下列函数的功能是【 】。include int Func(int a,int b) {if (a>b) return 1; else if

下列函数的功能是【 】。

include<iostream. h>

int Func(int a,int b)

{

if (a>b) return 1;

else if(a==b) return 0;

else return -1;

}


正确答案:比较两个整数a和b的大小若a>b则返回1若a等于b则返回0否则返回-1。
比较两个整数a和b的大小,若a>b则返回1,若a等于b,则返回0,否则返回-1。

第10题:

请补充函数fun(),函数fun()的功能是求7的阶乘。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio.h>

long fun(int n)

{

if(【 】)

return(n*fun(【 】);

else if(【 】)

return 1;

}

main()

{

int k=7;

printf("%d!=%ld\n", k, fun(k));

}


正确答案:n>1 n-1 n==1
n>1 n-1 n==1 解析:第一空:求阶乘时采用递归的算法,n>1和n==1这两种情况的处理方法不同,需要分开考虑。第二空:阶乘的算法是,当n>1时,n!=n*(n-1)!,即fun(n)=n*fun(n-1)。第三空:n==1是递归的终止条件,因为1!=1,所以当n=1时,返回1。

更多相关问题