阅读说明和流程图,填补流程图中的空缺(1)?(5),将答案填入答题纸对应栏内。【说明】本流程图用于计算菲波那契数列{a1=1,a2=1,…,an=an-1+an-2!n=3,4,…}的前n项(n>=2) 之和S。例如,菲波那契数列前6项之和为20。计算过程中,当前项之前的两项分别动态地保存在变量A和B中。【流程图】

题目
阅读说明和流程图,填补流程图中的空缺(1)?(5),将答案填入答题纸对应栏内。【说明】本流程图用于计算菲波那契数列{a1=1,a2=1,…,an=an-1+an-2!n=3,4,…}的前n项(n>=2) 之和S。例如,菲波那契数列前6项之和为20。计算过程中,当前项之前的两项分别动态地保存在变量A和B中。【流程图】

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

第1题:

阅读以下说明和流程图,回答问题1~2,将解答填入对应的解答栏内。

[说明]

下面的流程图描述了计算自然数1到N(N≥1)之和的过程。

[流程图]

[问题1] 将流程图中的(1)~(3)处补充完整。

[问题2] 为使流程图能计算并输出1*3+2*4+…+N*(N+2)的值,A框内应填写(4);为使流程图能计算并输出不大于N的全体奇数之和,B框内应填写(5)。


正确答案:(1) 0 (2) S+i (3) i+1 (4) S←S+i*(i+2) (5) i←i+2
(1) 0 (2) S+i (3) i+1 (4) S←S+i*(i+2) (5) i←i+2 解析:本题中,变量i用作循环变量,变量S则用于存放累加和,起初始值为0。在计算1+2+…+N时,每循环一次,将i的值累加到当前的S中,并且i自增1。为计算1*3+2*4+…+N*(N+2)的值,只需将其第i项的值i*(i+2)累加到S中;为计算不大于N的全体奇数之和,令循环变量的步长为2即可。

第2题:

阅读以下说明和流程图,填补流程图中的空缺(1)一(5),将解答填入答题纸的对应栏内。

【说明】

下面的流程图采用公式ex=1+x+x2/2 1+x3/3 1+x4/4 1+…+xn/n!+???计算ex的近似值。设x位于区间(0,1),该流程图的算法要点是逐步累积计算每项xx/n!的值(作为T),再逐步累加T值得到所需的结果s。当T值小于10-5时,结束计算。

【流程图】


正确答案:(1)S (2)x/n (3)T<O.00001 (4)S+T (5)n+1->n
(1)S (2)x/n (3)T<O.00001 (4)S+T (5)n+1->n 解析:在题目中已经给出了指数函数ex的公式,即基本算法,另外也给出了计算过程中控制误差终止计算的方法。本题主要的重点是如何设计计算流程,实现级数前若干项的求和,以及判断计算终止的条件。级数求和一般都是采用逐项累加的方法。从流程图我们可以看出s为累加结果,T为动态的项值,最后通过s+T->S来完成各项的累加。已知T=xnx/n!,如果每次都直接计算T的值,计算量会比较大。从ex的公式中我们可以看出每一项都一个共同点,就是后一项和前一项有简单的关系Tn=T(n-i)*x/n,我们可以充分利用前项的计算结果来计算后一项,这样就会大大减少计算量。这也是程序员需要掌握的基本技巧。在流程图中,一开始先输入变量x,接着对其他变量赋初值。级数项号n的初始值为1,逐次进行累积的T的初始值为1,根据后面的流程推断可以看出逐次进行累加的s应该有初始值l的(在输入的x满足条件直接退出循环的时候根据公式输出的值为D,所以空(1)的答案为“S”。从前面分析直到e。的公式中后一项和前一项有简单的关系Tn=T(n-i)*x/n,所以空(2)的答案为“x/n”。空(3)处是判断计算过程结束的条件,按照题目中的要求“当T值小于lO-5时,结束计算。”所以空(3)的答案为“T<0.00001”。按照题意空(4)处是要对每项的结果进行累加赋给S,实现s+T->s,所以空(4)的答案为“S+T”。流程走到空(5)的时候已经求出第n项的值Tn,并累加到s中,根据算法下一步应该计算第n+1项的值,所以这里需要对级数的项号n进行自增,空(5)的答案可以为“n+=1”或者n++,但是根据流程图以上的书写风格写为“n+1->n”应该是最佳答案。

第3题:

函数fib1、fib2求得菲波那契数列第n项(n>40)的速度并不相同,清指出速度慢的函数名,并简要说明原因。


正确答案:函数fibl。原因是递归算法时间消耗大。
函数fibl。原因是递归算法时间消耗大。 解析:[问题1](1)函数fibl不能通过编译,是因为语句“fibl(n)=fibl(n-1)+fibl(n-2)”出错,正确应该为“return fibl(n-1)+fibl(n-2)”。
(2)for循环中i从3开始递增,对于i=1或2并不会执行,因此,只需给f赋初值1即可。
[问题2]由于long数据类型是有范围限制的,当n超过某个值时,函数结果就会溢出,接下来的计算结果也就不会准确了。
[问题3]两个函数一个采用的是递归算法,另一个是迭代算法,通常情况下,前者的计算时间更长。因为递归会造成大量的函数调用和数据返回,需要很多的时间,效率较低。

第4题:

阅读以下说明和流程图,回答问题将解答填入对应栏内。

[说明]

已知递推数列:a(1)=1,a (2s)= a (s),a(2s+1)=a (s)+a (s+1)(s 为正整数)。试求该数列的第n项与前n项中哪些项最大?最大值为多少?

算法分析:该数列序号分为奇数或偶数两种情况做不同递推,所得数列呈大小有规律的摆动。设置a数组,赋初值a (1)=1。根据递推式,在循环中分项序号s (2~n)为奇数或偶数作不同递推:每得一项 a (s),即与最大值max 作比较,如果a (s)>max,则max=a(i)。最后,在所有项中搜索最大项(因最大项可能多于一项),并打印最大值max。

[问题]

将流程图中的(1)~(5)处补充完整。

注:流程图中(1)循环开始的说明按照“循环变量名:循环初值,循环终值,增量”格式描述。

[流程图]


正确答案:(1)for s=2 to n (2) mod(s2)=0 (3) a(s)=a(s/2) (4) a(s)=a(s+1)/2+a(s-1)/2) (5) max=a(s)
(1)for s=2 to n (2) mod(s,2)=0 (3) a(s)=a(s/2) (4) a(s)=a(s+1)/2+a(s-1)/2) (5) max=a(s)

第5题:

阅读下列说明和流程图,将应填入(n)处的语句写在对应栏内。

【说明】

下列流程图用泰勒(Taylor)展开式y=ex=1+x+x2/2!+x3/3!+…+xn/n!+…计算并打印ex的近似值,其中用ε(>0)表示误差要求。

【流程图】


正确答案:(1)0 (2)0 (3)|t|:ε (4)s+1 (5)t*x/s
(1)0 (2)0 (3)|t|:ε (4)s+1 (5)t*x/s 解析:本题考查程序流程图的内容。
首先让我们来了解一下题目的真正含义,题目要求用泰勒展开式计算y=ex的近似值。并且给出了误差要求,只要当误差小于ε时,就可以输出计算结果了。泰勒展开式的式子是n项之和,每多加一项,其值就越接近真实值。因此,在程序设计时,每加一项之前,先进行此项与ε的比较,来判定计算结果是否已满足题目要求。
从流程图中看到有S、y、t、x这几个变量。其中x、y是公式中的变量,而S、t则是中间变量。从y←y+t语句可以看出,t是每次要加的项,S则是帮助t改变的变量。在计算开始前,我们应该将y的值赋为零,因此,第(2)空答案就为0;而S在t没发生变化的初值也应该是0,即第(1)空答案为0。
第(3)空处是个条件判断语句,应该是进行该加项与ε比较判断,因此第(3)空的答案是|t|:ε。
第(4)空与第(5)空要一起考虑。由于S是帮助t改变的变量,而t的每次改变是分母乘以一个加1的数,而分子乘以x。这里假设S是帮助t改变分母的变量,第(4)空应填s+1,那么第(5)空应该为t*x/s。

第6题:

阅读下列说明和流程图,将应填入(n)的字句写在对应栏内。

【说明】

下列流程图(如图4所示)用泰勒(Taylor)展开式

sinx=x-x3/3!+x5/5!-x7/7!+…+(-1)n×x2n+1/(2n+1)!+…

【流程图】

计算并打印sinx的近似值。其中用ε(>0)表示误差要求。


正确答案:(1)x*x (2)x->t (3)│t│:ε (4)s+2->s (5)(-1) * t* x2/(s* (s-1))
(1)x*x (2)x->t (3)│t│:ε (4)s+2->s (5)(-1) * t* x2/(s* (s-1)) 解析:该题的关键是搞清楚几个变量的含义。很显然变量t是用来保存多项式各项的值,变量s和变量x2的作用是什么呢?从流程图的功能上看,需要计算11、3!、5!,……,又从变量s的初值置为1可知,变量s主要用来计算这此数的阶乘的,但没有其他变量用于整数自增,这样就以判断s用来存储奇数的,即s值依次为1、3、5,……。但x2的功能还不明确,现在可以不用管它。
(2)空的作用是给t赋初值,即给它多项式的第一项,因此应填写“x->t”。(3)空处需填写循环条件,显然当t的绝对值小于ε(>0)就表示已经达到误差要求,因此(3)空应填入“│t│:ε”。由变量s的功能可知,(4)空应当实现变量s的增加,因此(4)空应填入“s+2->s”。 (5)空应当是求多项式下一项的值,根据多项式连续两项的关系可知,当前一项为t时,后一项的值为(-1)*t*x*x/(s*(s-1))。但这样的话,每次循环都需要计算一次x*x,计算效率受到影响,联想到变量x2还没用,这时就可以判断x2就是用来存储x*x的值,使得每次循环者少进行一次乘法运算。因此(1)空处应填入“x*x”,(5)空处应填入“(-1)*t*x2/(s*(s-1))”。

第7题:

阅读以下说明和C函数代码,回答问题并将解答写在对应栏内。

【说明】

著名的菲波那契数列定义式为

f1=1 f2=1 fn=fn-1+fn-2 (n=3,4,…)

因此,从第1项开始的该数列为1,1,2,3,5,8,13,21,…。函数fibl和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项(调用fib1、fib2时可确保参数n获得一个正整数)。

【C函数代码】

函数fib1和fib2存在错误,只需分别修改其中的一行代码即可改正错误。

(1)函数fib1不能通过编译,请写出fib1中错误所在行修改正确后的完整代码。

(2)函数fib2在n≤2时不能获得正确结果,请写出fib2中错误所在行修改正确后的完整代码。


正确答案:(1) return fib1(n-1)+fib1(n-2);或return(fib1(n-1)+fib1(n-2)); (2) long f=1;或long f=(long)1;或long f=1L;
(1) return fib1(n-1)+fib1(n-2);或return(fib1(n-1)+fib1(n-2)); (2) long f=1;或long f=(long)1;或long f=1L; 解析:函数fib1不能通过编译,原因在于语句“fib1(n)=fib1(n-1)+fib1(n-2)”出错,该语句中fib1(n)、fib1(n-1)、fib1(n-2)都是函数调用,由于fib1是返回长整型数据的函数,所以不能为函数调用fib1(n)赋值。该语句处应将fib1(n-1)+fib1(n-2)的值作为返回值,形式为“returnfib1(n-1)+fib1(n-2)”。
在函数fib2中,for语句从i等于3开始循环,用于计算菲波那契数列第3项及以后各项的值。对于n等于1或2,for语句的循环体并不执行,因此对于第1、2项数列值,最后返回的f值是不确定的,为f赋初值1即可纠正该错误。

第8题:

下面的程序是求菲波那契(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 _________________

}

}


正确答案:fib(10) n==0||n==1 fib(n-1)+fib(n-2);
fib(10) n==0||n==1 fib(n-1)+fib(n-2); 解析:本题主要考查递归算法。解答本题的关键是理解递归算法的思想。在本题中,fib(10)方法是计算含由10项的菲波那契 (Fibonacci)数列,而fib(n-1)+fib(n-2);是用来计算第0项和第1项以外的菲波那契(Fibonacci)数列。

第9题:

阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。

【说明】对于大于1的正整数n,(x+1)n可展开为下面流程图的作用是计算(x+1)n展开后的各项系数(i=0,1,....,n)并依次存放在数组A[0...n]中。方法是依次计算k=2,3,..,n时(x+1)k的展开系数并存入数组A,在此过程中,对任一确定的k,利用关系式,按照i递减的顺序逐步计算并将结果存储在数组A中。其中,和都为1,因此可直接设置A[0]、A[k]的值为1。 例如,计算(x+1)3的过程如下:先计算(x+1)2(即k=2)的各项系数,然后计算(x+1)3(即k=3)的各项系数。K=2时,需要计算,和,并存入A[0],A[1]和A[2],其中A[0]和A[1]的值已有,因此将(即A[1])和即(A[0])相加得到的值并存入A[1]。k=3时,需要计算,和和,先计算出(由)得到并存入A[2],再计算(由得到)并存入A[1]。


正确答案:

【流程图】

(1)2,n,1

(2)A[k]

(3)k-1,1,-1

(4)A[i]+A[i-1]

(5)A[i]

第10题:

阅读以下说明和流程图,回答问题1-2,将解答填入对应的解答栏内。

[说明]

下面的流程图采用欧几里得算法,实现了计算两正整数最大公约数的功能。给定正整数m和 n,假定m大于等于n,算法的主要步骤为:

(1)以n除m并令r为所得的余数;

(2)若r等于0,算法结束;n即为所求;

(3)将n和r分别赋给m和n,返回步骤(1)。

[流程图]

[问题1] 将流程图中的(1)~(4)处补充完整。

[问题2] 若输入的m和n分别为27和21,则A中循环体被执行的次数是(5)。


正确答案:[问题1] (1) n>m或nm或其它等效形式 (2) m←t (3) n←r (4) m%n [问题2] (5) 1
[问题1] (1) n>m或nm或其它等效形式 (2) m←t (3) n←r (4) m%n [问题2] (5) 1 解析:(1)~(2)当n的值大于(等于)m时,应交换两者的值,再使用欧几里得算法;
(3)~(4)略;
(5)m,n和r在执行循环A前后的值分别为:

更多相关问题