已知函数Fact的程序如下,在执行Fact(5)的过程中,Fact函数被调用的次数为_____。 Long Int Fact(int n) { Long Int x; If (n > 1) { x = Fact(n-1); return n*x; } else return 1; }
A.5
B.3
C.4
D.6
第1题:
如有下程序: #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)<<endl; return 0; } 则该程序的输出结果应该是( )。
A.2
B.3
C.
D.5
第2题:
( 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
第3题:
( 8 )有如下的函数定义:
int Xfun(int *a, int n){
int x=*a;
for(int *pa=a+1; pa<a+n; pa++)
if(*pa>x) x=*pa;
return x;
}
若执行了语句
int x[5]={23,46,78,55,16};
后,通过表达式 Xfun(x,5) 调用该函数,则得到的返回值为 【 8 】 。
第4题:
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。
【说明】
Fibonacci数列A={1,1,2,2,5,8,…)有如下性质:
a0=a1=1
ai=ai-1+ai-2,i>1
对于给定的n,另外有一个由n个元素组成的数列xn,该数列中各元素的值为:
xi=ai/ai+1,i=0,1,…,n
现要求对xn中的元素按升序进行排序,然后以分数形式输出排序后的xn。例如n=5时,排序前的xn={1/1,1/2,2/3,3/5,5/8},排序后的xn={1/2,3/5,5/8,2/3,1/1}。程序中函数make()首先生成排序前的xn,然后调用函数sort()进行排序,最后输出所求结果。
【程序】
include <stdio.h>
include <stdlib.h>
include <malloc.h>
struct fact
{
long m,n;
};
void sort(int n,struct fact *p)
{
int a;
long s,t,u,v;
struct fact *q,*end;
for(end=p+(n-1),a=1;a;end--)
for(a=0,q=p;q<end;p++)
{
s=q->m;
t=q->n;
u=(q+1)->m;
v=(q+1)->n;
if( (1) )
{
q->m=u;
(2)
(3)
(q+1)->n=t;
a=1;
}
}
}
void make(int n)
{
int i;
long a,b,c;
struct fact *x,*y;
x=(struct fact *)malloc(sizeof(struct fact)*n);
x->m=1:
x->n=1;
for(a=1,b=1,i=2;i<=n;i++)
{
(4)
a=b;
b=c;
(x+(i-1))->m=a;
(x+(i-1))->n=b;
}
(5)
printf("x%d={%1d/%1d",n,x->m,x->n);
for(y=x+1;y<x+n;y++)
printf(",%1d/%1d",y->m,y->n);
printf("}\n");
free(x);
}
void main()
{
int n;
printf("input n:");
scanf("%d",&n);
make(n);
}
第5题:
有以下程序:#include <stdio.h>int fun(int n){ if(n == 1) return 1; else return( n + fun( n - 1 ) );}main( ){ int x; seanf("% d" ,&X) ;x = fun(x) ;pfinff( "% d \n" ,x);} 执行程序时,给变量x输入10,程序的输出结果是( )。
A.55
B.54
C.65
D.45
第6题:
设有一个递归算法如下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
第7题:
设有一个递归算法如下 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次函数调用
第8题:
有下列程序: int fun(int n) {if(n= =1))return l; else return(n+fun(n-1)): } main( ) { int x; seanf("%d",&x);x=fun(x);printf("%d\n",x); } 执行程序时,给变量x输入l0,程序的输出结果是( )。
A.55
B.54
C.65
D.45
第9题:
设有一个递归算法如下: 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次函数调用
第10题:
下列函数中,哪项是正确的递归函数( )。
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
第11题:
第12题:
55
54
65
45
第13题:
有如下程序: #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
第14题:
有以下程序: int fun(int n) {if(n==1)return 1; else return(n+fun(n-1)); } main() {int x; scanf("%if",&x);x=fun(x);printf("%d\n",x); } 执行程序时,给变量X输入10,程序的输出结果是( )。
A.55
B.54
C.65
D.45
第15题:
下列程序的输出结果是______。
long fun5(int n)
( long s;
if((n==l)‖(n==2))
s=2;
else
s=n+fun5(n-1);
return(s);
}
main()
{ long x;
x=fun5(4);
printf(%1d\n",x);
第16题:
下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!cn*(n-1)*...*2*1)
unsigned fact(unsigned n)
{
if (n<=1)
return 1;
return 【 】;
}
第17题:
有如下程序: #include <stdio.h> long fib(int n) { if(n>2)return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%d\n",fib(3));} 该程序的输出结果是( )。
A.2
B.4
C.6
D.8
第18题:
有以下程序int fun(int n) { if(n==1) return 1; else return(n+fun(n-1));}main(){ int x; scanf("%d",&x); x=fun(x); printf("%d\n",x);}执行程序时,给变量x输入10,程序的输出结果是A.55 B.54 C.65 D.45
第19题:
设有如下函数定义
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
第20题:
能保证对所有的参数能够结束的递归函数是
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);)
第21题:
下面 ______ 是正确的递归函数,它保证对所有的参数能够结束。
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); }
第22题:
设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次函娄[调用
第23题:
设有一个递归算法如下: int fact(int n) { //n大于等于0 if(n<=0) return 1; else return n*fact(n-1); } 则计算fact(n)需要调用该函数的次数为()
第24题:
n+1
n-1
n
n+2