2023-2024学年浙教版高一下学期第五章第五节 递归算法实例及程序实现

2024-07-11
| 10页
| 169人阅读
| 0人下载

内容正文:

2023-2024学年浙教版高一下学期第五章第五节 递归算法实例及程序实现 一、选择题 1.______是重复反馈过程的活动,______是重复调用函数自身(   ) A.递推,递归 B.递归,递推 C.迭代,递归 D.递归,迭代 2.19世纪末,在欧洲的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。玩家要将最左边杆上的盘子全部移到最右边的杆子上,要求一次只能移动一个盘,且不允许大盘放在小盘的上面。如果最左边杆子上只有3个盘子,则最少需要移动(    )步才能将所有的盘子移至最右边杆。(   ) A.15 B.31 C.7 D.8 3.有如下程序段 Function Search(m As Integer, pre As Integer) As Integer Dim i As Integer If m < 0 Then Search = 0 ElseIf m = 0 Then Search = 1 Else For i = pre To m Search = Search + Search(m - i, i) Next i End If End Function Private Sub Command1_Click() Dim n As Integer n = Val(Text1.Text) Label1.Caption = Search(n, 1) End Sub 若在文本框 Text1 中输入“4”,则标签 Label1 中显示的内容为(   ) A.2 B.4 C.5 D.7 4.定义如下递归函数: def f(a, n):     n=n-1     if n==0:        return a     else:        return f(a-1,n)+f(a+1,n) print(f(5,3)) 程序运行后,输出的结果是(   ) A.10 B.20 C.30 D.40 5.有如下 VB 程序段: Dim n As Integer Dim sum As Integer Dim i As Integer Function fx(i As Integer) as Integer   If i = 1 Then fx = 5   Else   fx = 5 * 2 ^ (i - 1) + fx(i - 1)   End   if End Function Private Sub Command1_Click()   n = Val(Text1.Text): sum = 0   For i = 1 To n     sum = sum + fx(i)   Next i   Label1.Caption = Str(sum) End Sub 若在 Text1 中输入4,单击 Command1,则 Label1 中显示的内容为(   ) A.55 B.75 C.80 D.130 6.下列选项中没有体现递归思想是(   ) A.Hanoi塔问题 B.合并排序 C.插入排序 D.快速排序 7.求输入的两个自然数的最大公约数。如输入48和36则输出最大公约数为12,为其中的空白处选择合适的选项(    )。 A.输出 a B.输出 b C.输出 r D.输出 a / b 8.下面代码的输出结果是(   )。 def add(x): if x>0: return x+add(x-l) else: return 0 result=add(10) print(result) A.0 B.10 C.55 D.45 9.某VB程序使用了递归函数,代码如下: Private Sub Command1_Click() n= val(Text1.Text) Text2.Text = f(n) End Sub Function f(x As Integer) As String Dim t as integer If x = 1 Then  t = 1  Else  t = val(f(x - 1)) + 2 f=str(t) End Function 在文本框Text1中输入3,运行程序并点击按钮Command1后,文本框Text2中显示的内容是(    ) A.1 B.5 C.135 D.531 10.用递归求n!,当n=1时,f(1)=1,否则f(n)=f(n-1)*n,当n=3时,递归调用顺序正确的是(   ) A.f(1)、f(2)、f(3) B.f(2)、f(3)、f(1) C.f(3)、f(2)、f(1) D.以上都不对 11.下列关于递归算法的说法中,正确的是(    ) A.在1977年前后形成标准的计算机高级语言“F0RTRAN77”禁止在程序使用递归,原因之一是该方法可能会占用更多的内存空间 B.和非递归算法相比,解决同一个问题,递归算法一般运行得更快一些 C.对于较复杂的问题,用递归方式编程一般比非递归方式更难一些 D.对于已经定义好的标准数学函数sin(x),应用程序中的语句“y=sin(sin(x));”就是一种递归调用 12.写出下列程序的输出结果 Private Sub Command1_Click() For i =" 1" To 4 If i Mod 3 <> 0 Then s =" s" + (-1) ^ (i + 1) * 1 / i Next i MsgBox s*100 End sub 该程序的运行结果是(   ) A.-25 B.-75 C.15 D.25 13.关于“递归”,下列说法不正确的是(  ) A.可以利用“递归”进行具有自相似性无限重复事物的定义 B.可以利用“递归”进行具有自重复性无限重复动作的执行,即“递归计算”或“递归执行” C.可以利用“递归”进行具有自相似性无限重复规则的算法的构造 D.递归算法的关键只要给出递归关系式即可求出问题的解 14.有如下 VB 程序段: Private Sub Command1_Click() Dim i As Integer,s As string s = "" For i = 1 To 3 Step 2   s = str(f(i)) + s Next i Text1. Text = s End Sub Function f(n As Integer) As Integer If n = 1 Then    f = 2 Else    f = f(n - 1) + n End If End Function 则执行该程序段后,s 的值为(    ) A.247 B.27 C.72 D.742 15.某VB程序段如下: Function f (n As Integer) As Long    If n = 1 Then f = 5 Else   f= 2*f(n-1) – 3 End If End Function Private Sub Command1_click()   Dim n As Integer   n = Val (Text1.Text)   Text2. Text = Str(f(n)) End Sub. 该程序段运行后,在文本框Text1中输入5,单击命令按钮Command1后,文本框Text2中显示的是(  ) A.18 B.35 C.63 D.123 二、填空题 16.下面程序的功能是:计算表达式1+3+5+…+(2n-1)的值,程序运行时在文本框Text1中输入n的值,计算结果在文本框Text2中输出。则程序中加框处的语句应分别更正为: (1)__________________ (2)__________________ Private Sub Command1_Click() Dim sum As Long,i As Integer,n As Integer sum = 0 n =Val( Text1.Text) For i =" 1" To 2 * n - 1 Step 2 sum =" sum" + 2 Next i Text2.label=Str(sum) End Sub 17.选择算法,解决问题。 在使用计算机解决问题时,选择合适的算法,是有效解决问题的关键。 分析下面的问题,请选择最合适的算法: (请用英文字母填写) A.解析法      B.递归法      C.穷举法      D.排序法 猴子吃桃问题: 小猴有一天摘了若干个桃子,他非常贪吃,当天就吃掉了一半还多一个;第二天接着吃剩下的桃子一半多一个;以后每天都是如此,到了第七天吃桃子时,却发现只剩下一个。请问,小猴那天一共摘了几个桃子? 18.如下程序段运行后,k的值是 Dim d(1 to 5)  As Integer k=0 For i="1" to 5 d( i )=i If d( i )>k Then k="d(" i ) Next i Print k 19.下面程序的功能是:计算表达式1×2×3×……×10的值,并在文本框Text1中输出表达式的值。为了实现这一功能,则程序中划线处的语句应更正为 (1) (2) (3) Private Sub Command1_Click() Dim I As Integer, t As Long t = 0 (1) For i =" 1" To 10 t =" t" + i(2) Next i Text1.caption =" Str(" t ) (3) End Sub 20.读流程图写结果 运行结果是___________________。 三、操作题 21.在平面坐标系中,给定一组有序的点。从原点出发,依次用线段连接这些点,构成一条折线。要求编写一个“计算折线长度”的程序,功能如下:在文本框Text1中依次输入这些点的坐标值(数据都用逗号分隔并以逗号结尾),单击“计算”按钮Cmd后,程序计算这条折线的长度,结果显示在Label1中。例如,三个点的坐标(5,10)、(8,12)、(6,17)输入格式如图所示。 (1) Cmd对象属于______类。 (单选,填字母:A.Form / B.Label / C.TextBox / D.CommandButton ) (2)实现上述功能的VB程序如下,请在划线处填入合适代码。 Private Sub Cmd_Click() Dim i As Integer,j As Integer,k As Integer Dim x1 As Single,y1 As Single,x2 As Single,y2 As Single Dim d As Single,Totald As Single,v As Single,s As String s =______① x1 = 0: y1 = 0'出发点为坐标原点 k = 1 : j = 1 : Totald = 0 For i = 1 To Len(s) If Mid(s,i,1) =","Then v = Val(Mid(s,j,i - j))'提取坐标值,保存在变量v中 j = i + 1 If ② Then x2 = v Else y2 = v d = Sqr((x2 — x1)^2 + (y2 — y1)^ 2) Totald = Totald + d x1 = x2 : y1 = y2 End If k = k + 1 End If Next i Label1. Caption = Str(Totald) End Sub (3) 运行该程序,输入数据如上图所示,程序执行到循环结束时,变量k的值为______。 22.约翰·沃利斯(John Wallis,1616-1703,英国数学家)给出计算公式: 我们用S来代替π/2,,公式就变成了: 项数 1   2   3   4   5   6   7   8  …… 请观察公式中每一项,,……的变化规律, 1)如果用x/y表示每一项的分子和分母,请写出x和Y的变化规律。 2)如果要递推n项求π的值(n从外部输入),请写出VB代码。 四、简答题 23.请简述什么是递归函数,并给出一个递归函数的例子。 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.C 2.C 3.C 4.B 5.D 6.C 7.A 8.C 9.B 10.C 11.A 12.D 13.D 14.C 15.B 16.(1)sum =" sum" + i  (2)Text2.Text = Str(sum) 17.B 18.5 19.(1)t=1;(2)t=t*i;(3)Text1.Text=Str(t) 20.55 21.(1)D (2)①Text1.Text ②k Mod 2=1 (3)7 22.1)当x、y在奇数项时,x=n+1,y=n;x、y在偶数项时,x=n,y=n+1。 2)VB代码: Function sp(x As Long) As Double If x = 1 Then sp = 2 / 1 ElseIf x Mod 2 = 1 Then sp = sp(x - 1) * (x + 1) / x Else sp = sp(x - 1) * x / (x + 1) End If End Function Private Sub Command1_Click() Dim n As Long Dim s, pi As Double n = Val(InputBox("请输入递推项")) s = sp(n)pi = 2 * s Print "pi="; pi End Sub 23.递归函数是一种在函数体内调用自身的函数。一个递归函数的例子是计算斐波那契数列的函数,其中每个数是前两个数的和,递归定义为Fib(n) = Fib(n-1) + Fib(n-2),基本情况是Fib(0) = 0和Fib(1) = 1。 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

2023-2024学年浙教版高一下学期第五章第五节 递归算法实例及程序实现
1
2023-2024学年浙教版高一下学期第五章第五节 递归算法实例及程序实现
2
2023-2024学年浙教版高一下学期第五章第五节 递归算法实例及程序实现
3
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。