A.求整数n的阶乘
B.factorial(5)是函数调用
C.是递归函数
D.求任意两个数值n和n-1的乘积
第1题:
已知递归函数f的定义如下:
int f(int n){
if(n<= 1)return 1;//递归结束情况f5=5*f3=5*3*f1
else return n*f(n-2); //递归
}
则函数调用语句f(5)的返回值是______。
第2题:
( 9 )下面的函数利用递归实现了求 1+2+3+ …… +n 的功能:
int sum ( int n ) {
if ( n==0 )
return 0;
else
return n+sum ( n-1 ) ;
}
在执行 sum ( 10 )的过程中,递归调用 sum 函数的次数是【 9 】 。
第3题:
T(n)=O(f(n))中,函数O()的正确含义为
A.T(n)为f(n)的函数
B.T(n)为n的函数
C.存在足够大的正整数M,使得T(n)≤M×f(n)
D.存在足够大的正整数M,使得M×f(n)≤T(n)
第4题:
有如下递归函数:
int Fun(int n){
if(n<=1) return 1;
______
}
请补充完整,使得函数Fun能够正确计算形参n的阶乘。
第5题:
阅读下列函数说明和C代码,将应填入 处的字句写在答题纸的对应栏内。
[函数1.1说明]
函数int factors(int n)的功能是判断整数n(n>=2)是否为完全数。如果n是完全数,则函数返回0,否则返回-1。
所谓“完全数”是指整数n的所有因子(不包括n)之和等于n自身。例如28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28是“完全数”。
[函数1.1]
int factors(int n)
{
int i,s;
for(i=1,s=0;i<=n/2;i++)
if(n%i==0) (1) ;
if( (2) )return 0;
return -1;
}
[函数1.2说明]
函数int maxint(int a[], int k)的功能是用递归方法求指定数组中前k个元素的最大值,并作为函数值返回。
[函数1.2]
int maxint(int a[],int k)
{
int t;
if( (3) ) return (4) ;
t=maxint(a+1, (5) );
return (a[0]>t)?a[0]:t;
第6题:
设有一个递归算法如下 im fact(int n){ if(n<=0)return 1; else return n * fact(n-1); } 下面正确的叙述是(35)。
A.计算fact(n)需要执行n次函数调用
B.计算fact(n)需要执行n+1次函数调用
C.计算fact(n)需要执行n+2次函数调用
D.计算fact(n)需要执行n-1次函数调用
第7题:
下列给定程序中,函数fun的功能是按以下递归公式求函数值。

例如:当给n输入5时,函数值为240;当给n输入3时,函数值为60。
请改正程序中的错误,使它能得到正确结果。
注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
include <stdio.h>
/*************found****+*******/
fun(int n);
{
int c;
/*************found********+*****/
if(n=1)
c=15;
else
c=fun(n-1)*2;
return(c);
}
main()
{
int n;
printf("Enter n:");
scanf("%d",&n);
printf("The result:%d\n\n",fun(n));
}
第8题:
编写函数fun(),其功能是计算:

s作为函数值返回。
在C语言中可调用log(n)函数求1n(n)。log函数的引
用说明为:double log(double x)。
例如,若m的值为20,则fun()函数值为6.506583。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。
试题程序:


【解析】题目要求写出程序实现数学表达式的功能,需要用for循环计算累加的结果,调用sqrt函数实现求平方根。循环变量的范围是1~m,每次循环都进行一次累加求和。需要特别注意的是,log函数的形式参数为double型变量,用于循环的计数变量为整数,所以必须强制转换。最后返回所求出的平方根。
第9题:
已知递归函数fun的定义如下: int fun(int n) { if(n<=1)return1;//递归结束情况 else return n*fun(n-2);//递归 } 则函数调用语句fun(5)的返回值是( )。
A.5
B.12
C.15
D.30
第10题:
设n的初始值为正整数,设计一个递归算去如下: int fact (int n) { if (n<=0) return l; else return (n*fact (n-l)) ; 以下叙述中正确的是(49) 。
A.计算fact(n)需要执行n次函数调用
B.计算fact(n)需要执行n+l次函数调用
C.计算fact(n)需要执行n+2次函数调用
D.计算fact(n)需要执行n-l次函娄[调用
第11题:
下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*...*2*1)
unsigned fact (unsigned n)
{
if(n<=1)
retum 1;
return【 】;
}
第12题:
第13题:
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。 (1)funl(intn)求出n的阶乘,必须使用递归调用。 (2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。 注意:不能修改函数的其他部分。 试题程序: include<iostream.h> //必须使用递归 intfunl(intn) { } //不能使用递归 intfun2(intn) { } voidmain { inti; cout<<"请输入一个整数:"<<endl; cin>>i; cout<<"输入数字的阶乘是:"<<funl(i)<<endl; cout<<"输入数字的阶乘是:"<<fun2(i)<<endl; return; }
第14题:
已知递归函数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
第15题:
下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!cn*(n-1)*...*2*1)
unsigned fact(unsigned n)
{
if (n<=1)
return 1;
return 【 】;
}
第16题:
下面是一个递归Java程序,其功能为 ( )long Factorial(int n){ if(1==n){ return 1; } else return n*Factorial(n-1);}
A.求1-n的和
B.求2到n的和
C.求n的阶乘
D.求2-n的积
第17题:
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。
【函数2.1说明】
递归函数sum(int a[], int n)的返回值是数组a[]的前n个元素之和。
【函数2.1】
int sum (int a[],int n)
{
if(n>0) return (1);
else (2);
}
【函数2.2说明】
有3个整数,设计函数compare(int a,int b,int c)求其中最大的数。
【函数2.2】
int compare (int a, int b, int c )
{ int temp, max;
(3) a:b;
(4) temp:c;
}
【函数2.3说明】
递归函数dec(int a[],int n)判断数组a[]的前n个元素是否是不递增的。不递增返回 1,否则返回0。
【函数2.3】
int dec( int a[], int n )
{
if(n<=1) return 1;
if(a[0]<a[1]) return 0;
return (5);
}
第18题:
请补充main函数,该函数的功能是:输入两个正整数m和n,求这两个数的最大公约和最小公倍数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。
试题程序:
include <stdio.h>
main ( )
{
int a, b, n, m, t;
clrscr ();
printf ("\nInput two numbers: \n");
scanf ("%d, %d", &n, &m);
if (n<m)
{
a=m;
b=n;
}
else
{
a=n;
b=m;
}
while(【 】)
{
t=【 】
a=b;
b=t;
}
printf ("greatest con. non divisor:
%d\n", a);
printf ("least common multiple:
%d\n",【 】);
}
第19题:
请编写函数proc(),它的功能是计算: s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5 在C语言中可调用log(n)函数求1n(n)。 例如,若n1的值为30,则proc()函数值为8.640500。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。 试题程序:

第20题:
请编写函数proc(),它的功能是求Fibonacci数列中小于n的最大的一个数,结果由函数返回。
Fibonacci数列F(n)的定义为
F(0)=O,F(1)=1
F(n)=F(n-1)+F(n-2)
例如,n=500时,函数值为377。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填写所编写的若干语句。
试题程序:



【解析】由题目中所给的公式可知,Fibonacci数列的第n项为第n-1项和第n-2项的和。要求Fibonacci数列中小于n的最大的一个数。首先根据公式求出Fibonacci数列的第n项的值,当第i项大于n,则返回第i-1项的值。
第21题:
A.功能等价于下面的函数#n为整数defsum2(n):return(1+n)*n/2
B.sum(5)是函数调用
C.是递归函数
D.求任意两个数值n和n-1的和
第22题:
已知递归函数f的定义如下:
int f(int n)
{
if(n <=1)return 1; //递归结束情况
else return n*f(n-2); //递归}
则函数调用语句f(5)的返回值是【 】。
第23题: