菲波那契(Fibonacci)数列定义为 f(1)=1,f(2)=1,n>2时f(n)=f(n-1)+f(n-2) 据此可以导出,n>1时,有向量的递推关系式: (f(n+1),f(n))=f(f(n),f(n-1))A 其中A是2*2矩阵( )。从而,(f(n+1),f(n)=(f(2),f(1))*( )
A.B.C.D.A.An-1B.AnC.An+1D.An+2
第1题:
已知f(1)=1,f(2)=2,当n≥3时,f(n)= f(n-1)+f(n-2),编程求f(100)的值,应选择的算法为( )
A.解析法
B.穷举法
C.递归法
D.冒泡排序法
第2题:
下面的程序是求菲波那契(Fibonacci)数列的前10项。已知该数列的前两项都为1,即F(1)=1,F(2)=1;而后面各项满足: F(n)=F(n-1)+F(n-2)。请在程序的每条横线处填写一条语句,使程序的功能完整。
注意:请勿改动main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。
public class Fibonacci{
public static void main(String args[]){
System.out.printtn("Fibonacci is"+" "+"_______________________);
}
static long fib(int n){
if(______________)
return 1;
else
return _________________
}
}
第3题:
请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为
F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2)
例如:t=1000时,函数值为987。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include <conio.h>
include <math.h>
include <stdio.h>
int fun(int t)
{
}
main()
{
int n;
clrscr();
n=1000;
printf("n=%d, f=%d\n",n, fun(n));
}
第4题:
编写函数jsValue(),它的功能是求Pibonacci数列中大于t的最小的一个数,结果由函数返回,其小 Fibonacci数列F(n)的定义为:
F(0)=0, F(1)=1 ’
F(n)=F(n-1)+F(n-2)
最后调用函数writeDat(),把结果输出到文件OUT10.DAT中。
例如:当t=1000时,函数值为1597。
注意:部分源程序已给出。
请勿改动主函数main()和写函数WriteDat()的内容。
试题程序:
include
int jsValue(int t)
{
}
main ( )
{
int n;
n=1000;
printf("n=%d, f=%d\n", n, jsValue(n));
writeDat();
}
writeDat()
{
FILE *in, *out;
int n,s;
out = fopen("OUT10.DAT", "w");
s = jsValue(1000); printf("%d",s);
fprintf(out, "%d\n", s);
fclose(out);
}
第5题:
编写函数,isValue(),它的功能是求Fibonacci数列中大于t的最小的一个数,结果由函数返回,其中 Fibonacci数列F(n)的定义为:
F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2)
最后调用函数writeDat(),把结果输出到文件OUTl0.DAT中。
例如:当t=1000时,函数值为1597。
注意:部分源程序已给出。
请勿改动主函数main()和写函数WriteDat()的内容。
include <stdio.h>
int jsValue(int t)
{
}
main ( )
{
int n;
n=1000;
printf("n=%d, f=%d\n", n, jsValue(n));
writeDat ();
}
writeDat ()
{
FILE *in, *out;
int n, s;
ut = fopen ("OUT10.DAT", "w");
s = jsValue(1O00); printf("% d",s);
fprintf(out, "%d\n", s);
fclose (out);
}
第6题:
请编写一个函数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)
{
}
第7题:
编写函数jsValue(int t),它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) (n≥2) 最后调用函数writeDat读取l0个数据t,分别得出结果且把结果输出到文件out.dat中。 例如:当t=1000时,函数值为:1597。 注意:部分源程序存在test.c文件中。 请勿改动数据文件in.dat中的任何数据、主函数main和写函数writeDat的内容。
第8题:
以下程序的输出结果是
#include<stdio.h>
int fun(int n,int *s)
{ int f1,f2;
if(n==0||n==1)
*s=1;
else
{ fun(n-1,&f1);
fun(n-2,&f2);
*s=f1+f2;
} }
void main()
{ int x;
fun(6,&x);
printf("\n%d",x);}
A.7
B.13
C.9
D.10
第9题:
有以下程序
#include<stdio.h>
void fun(int n,int *p)
{
int f1,f2;
if(n==1||n==2) *p=1;
else
{
fun(n-1,&f1); fun(n-2,&f2);
p=f1+f2;
}
}
main()
{
int s;
fun(3,&s); printf(“%d\n”,s);
}
程序运行的结果为( )。
A.2
B.3
C.4
D.5
第10题:
第11题:
第12题:
P=F(P/F,i,n)(F/P,i,1)
P=F(P/F,I,n)
P=F(P/F,I,n-2)
P=F(P/F,I,n-1)(F/P,I,2)
第13题:
有以下程序
#include<stdi0.h>
void fun(int n,int*p)
( int f1,f2;
if(n==1|| n==2)*p=1;
else
{ fun(n-1,&f1);fun(n-2,&f2);
*p=f1+f2;
}
}
main
{ int s;
fun(3,&s);printf("%d",s);
}
程序的运行结果是( )。
A.2
B.3
C.4
D.5
第14题:
编写函数jsValue(),它的功能是求Fibonacci数列中大于t的最小的一个数,结果由函数返回,其中Fibonacci数列F(n)的定义为:
F(0)=0, F(1)=1
F(n)=F(n-1)+F(n-2)
最后调用函数writeDat(),把结果输出到文件OUT10.DAT中。
例如:当t=1000时,函数值为1597。
注意:部分源程序已给出。
请勿改动主函数main()和写函数WriteDat()的内容。
试题程序:
include<stdio.h>
int jsValue(int t)
{
}
main()
{
int n;
n=1000;
printf("n=%d, f=%d\n", n,jsValue(n));
writeDat();
}
writeDat()
{
FILE *in, *out;
int n,s;
ut = fopen("OUT10.DAT", "w");
s = jsValue(1000); printf("%d",s);
fprintf(out, "%d\n", s);
fclose(out);
}
第15题:
已知数列的递推公式如下:
f(n)=1 当n=0,1时
f(n)=f(n-1)+f(n-2) 当n>1时
则按照递推公式可以得到数列:1,1,2,3,5,8,13,21,34,55,……。现要求
从键盘输入n值,输出对应项的值。例如当输入n为8时,应该输出34。程序如下,
请补充完整。
Private Sub runll_Click()
f0=1
f1=1
num=Val(InputBox("请输入一个大于2的整数:"))
For n=2 To 【 】
f2=【 】
f0=f1
f1=f2
Next n
MsgBox f2
End Sub
第16题:
编写函数jsvalue(),其功能是:求Fibonacci数列中大于t的最小的一个数,结果由该函数返回。其中,Fibonacci数列F(n)的定义如下。F(0)=0, F(1)=1F(n)=F(n-1)+F(n-2)最后,调用函数writeDat()读取10个数据t,分别得出结果,并把结果输出到文件out.dat中。例如:当t=1000时,函数值为1597。部分源程序已给出。请勿改动主函数main()和写函数writeDat()的内容。#include <stdio.h>int jsValue(int t){ }void writeDat(){ FILE *in, *out; int i, n, s; in = fopen("in.dat", "r"); out = fopen("out.dat", "w"); for (i=0; i<50; i++) { fscanf(in, "%d,", &n); s = jsValue(n); fprintf(out, "%d\n", s); } fclose(in); fclose(out);}main(){ int n; n = 1000; printf("t=%d,f=%d\n", n, jsValue(n)); writeDat();}
第17题:
以下程序的输出结果是( )。 #include<stdio.h> int fun(int n,int *s) { int f1,f2; if(n==0||n==1) *s=1; else { fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2; } } void main() { int x; fun(6,&x); printf("\n%d" ,x);}
A.7
B.13
C.9
D.10
第18题:
有以下程序: #include<stdio.h> iht fun(iht n,int*p) { int f1,f2; if(n==1||,n==2)*p=1; else { fun(n-1,&f1);fun(n-2,&f2); *p=f1+f2; } } main() { int s; fun(3,&s); printf("%d\n",s); } 程序的运行结果是______。
A.2
B.3
C.4
D.5
第19题:
请编写函数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项的值。
第20题:
设n位二进制数(从00…0到11…1)中不含连续三位数字相同的数共有F(n)个,显然F(1)=2,F(2)=4。以下选项中有一个公式是正确的,通过实例验证选出的是( )。
A.F(n)=2n (n≥1) B.F(n)=n2-n+2 (n≥1) C.F(n)=F(n-1)+4n-6 (n≥2) D.F(n)=F(n-1)+F(n-2) (n≥3)
第21题:
第22题:
第23题: