已知递归函数f的定义如下:
int f(int n){
if(n<= 1)return 1;//递归结束情况f5=5*f3=5*3*f1
else return n*f(n-2); //递归
}
则函数调用语句f(5)的返回值是______。
第1题:
已知递归函数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
第2题:
有如下递归函数:
int Fun(int n){
if(n<=1) return 1;
______
}
请补充完整,使得函数Fun能够正确计算形参n的阶乘。
第3题:
设有一个递归算法如下int fact(intn){//n 大于等于0 if(n<=0)return 1; else return n* fact(n--); }则计算fact(n)需要调用该函数的次数为(30)次。
A.n
B.n+1
C.n+2
D.n-1
第4题:
下述程序的输出结果是( )。 #include <stdio.h> int f(n) int n; { if(n==0 | | n==1) return 3; return n-f(n-2); } void main() {printf("\n%d",f(10)); }
A.3
B.8
C.9
D.10
第5题:
设有如下函数定义
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
第6题:
已知递归函数f(n)的功能是计算1+2+…+n,且n≥1,应采用的代码段是______。
A.if n>1 then return 1 else return n+f(n-1)
B.if n>1 then return 1 else return n+f(n+1)
C.if n<1 then return 0 else return n+f(n-1)
D.if n<1 then return 0 else return n+f(n+1)
第7题:
已知递归函数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
第8题:
下列函数中,哪项是正确的递归函数( )。
A int Fun(int n)
{
if(n<1) return 1;
else return n*Fun(n+1);
}
B) int Fun(ira n)
{
if(abs(n)<1) return 1;
else return n*Fun(n/2);
}
C) int Fun(int n)
{
if(n>1) return 1;
else return n*Fun(n*2)1
}
D) int Fun(int n)
{
if(n>1) return 1;
else retun n*Fun(n-1);
}
A.A
B.B
C.C
D.D
第9题:
试题三(共15分)
阅读以下说明和C代码,填充代码中的空缺,将解答填入答题纸的对应栏内。
【说明1】
下面的函数countChar(char *text)统计字符串text中不同的英文字母数和每个英文字
母出现的次数(英文字母不区分大小写)。
【C代码1】
Int countchar(char*text)
{
int i,sum=O; /*sum保存不同的英文字母数*/
char *ptr;
int c[26]={0}; /*数组c保存每个英文字母出现的次数*/
/*c[0]记录字母A或a的次数,c[1]记录字母B或b的次数,依此类推*/
ptr=(1); /* ptr初始时指向字符串的首字符*/
while (*ptr) {
if (isupper (*ptr) )
c[*ptr一’A’]++;
else &39;
if (islower (*ptr) )
c[*ptr一’a’]++;
(2); /*指向下一个与字符*/
}
for ( i=0. i<26; i++ )
If(3)sum++;
return sum;
}
【说明2]
将下面C代码2中的空缺补全后运行,使其产生以下输出。
f2: f2:f2:2
f3: f3:1
【C代码2]
include <stdio . h>
int fl (int (*f) (int)) .
int f2 (int) ;
int f3 (int) ;
int main ()
{
Printf(“%d\n”,f1(4))
Printf(“%d\n”,f1(5))
return 0;
}
int fl(int (*f) (int) }
{
int n=O;
/*通过函数指针实现函数调用,以返回值作为循环条件*/
While(6) n++
return n;
}
int f2 (int n)
{
printf ("f2: ") ;
return n*n-4;
}
int f3 (int n)
{
printf ("f3: ") ;
return n-1
}
第10题:
递归函数f(n)=f(n-1)+n(n>1)的递归出口是()
第11题:
f(1)=0
f(1)=1
f(0)=1
f(n)=n
第12题:
对
错
第13题:
( 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
第14题:
若有以下程序: #include<stdio.h> void f(int n); main() { void f(int n); f(5); } void f(int n) { printf("%d\n",n);}则以下叙述中不正确的是( )。
A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f
C.对于以上程序,编译时系统会提示出错信息:对f函数重复说明
D.函数f无返回值,所以可用void将其类型定义为无返回值型
第15题:
阅读以下函数说明和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);
}
第16题:
请编写一个函数long Fibo(int n), 该函数返回n的Fibonacci数。规则如下:n等于1或者2时,Fibonacci数为1,之后每个Fibonacci数均为止前两个数之和, 即:F(n)=F(n-1)+F(n-2)
注意:清使用递归算法实现该函数。
部分源程序已存在文件test1_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数Fibo的花括号中填写若干语句。如n=8时,结果是21。
文件test1_2.cpp清单如下:
include<iostream.h>
corlsh int N=8;
long Fibo(int n);
void main()
{
long f=Fibo(N);
couk<<f<<endl;
}
long Fibo(int n)
{
}
第17题:
能保证对所有的参数能够结束的递归函数是
A.int f(int n){if(n<1)return 1;else return n*f(n+1);}
B.int f(int n){if(n>1)return 1;else return n*f(n-1);}
C.int f(int n){if(abs(n)<1)return 1;else return n*f(n/2);}
D.int f(int n){if(n>1)return 1;else return n*f(n*2);)
第18题:
设有一个递归算法如下: int 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次函数调用
第19题:
下面 ______ 是正确的递归函数,它保证对所有的参数能够结束。
A.int f(int n){ if(n<1) return 1; else return n*f(n+1); }
B.int f(int n){ if(n>1) return 1; else return n*f(n-1); }
C.int f(int n){ if(abs(n)<1) return 1; else return n*f(n/2); }
D.int f(int n){ if(n>1) return 1; else return n*f(n*2); }
第20题:
递归函数f(n)的功能是计算1+2+…+n,且n≥1,则f(n)的代码段是(49)。
A.if n>1 then return 1 else return n+f(n-1)
B.if n>1 then return 1 else return n+f(n+1)
C.if n>1 then return 0 else return n+f(n+1)
D.if n<1 then return 0 else return n+f(n-1)
第21题:
已知递归函数f的定义如下:
int f(int n)
{
if(n <=1)return 1; //递归结束情况
else return n*f(n-2); //递归}
则函数调用语句f(5)的返回值是【 】。
第22题:
设有一个递归算法如下: int fact(int n) { //n大于等于0 if(n<=0) return 1; else return n*fact(n-1); } 则计算fact(n)需要调用该函数的次数为()
第23题:
n+1
n-1
n
n+2