递归算法 知识点题库

哥德巴赫1742年给欧拉的信中提出了以下猜想:任一大于2的偶数都可写成两个质数之和,是为著名的哥德巴赫猜想。下面VB程序用来验证4-10000的偶数分解。

请完善下列程序代码:

Function prime(x As Integer) As Boolean ’此函数判断x是否为质数

  prime = True

  For i = 2 To Int(Sqr(x))

    If Then prime = False: Exit For

Next i

End Function

Private Sub Command2_Click()

Dim a As Integer, b As Integer

Dim n As Integer

For a = 2 To n \ 2

b = n - a

If Then

      List1.AddItem Str(a) + "  " + Str(b) + "  " + Str(n)

End If

          Next

End Sub

我们在用计算机解决问题时,常采用递归法。已知:f(3)=3;当n>3时,f(n)=f(n-1)*n;编程求f(5)的值。下列结果正确的是(  )
A . 120 B . 60 C . 3 D . 23
有8阶楼梯,从第0阶开始往上走,每次可以走一步或者两步,自定义函数fg可以计算走完n阶楼梯有多少种走法:

Function fg(n as Integer)As Integer

 If n=1 fg=1

 If n=2 fg=2

 If n>=3 fg=fg(n-1)+fg(n-2)

End Function

请问走完这8阶楼梯的走法有(  )

A . 34种 B . 35种 C . 36种 D . 37种
某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
某个进行素数判断的VB程序段如下:

Private Sub Command1_Click()

Dim x As Integer

x = Val(Text1.Text)

Label1. Caption = Str(x)+ prime(x, 2)

End Sub

Function prime(n As Integer, m As Integer) As String

If n = m Then

prime = "是素数。"

ElseIf n < 2 Or n Mod m = 0 Then

prime = "不是素数。"

Else

prime = prime(n, m +1)

End If

End Function

在文本框Text1中输入的值是123,并执行程序后,自定义函数prime被执行的次数是(  )

A . 1次 B . 2次 C . 122次 D . 123次
有如下程序段:

Function f(a As Integer, b As Integer) As Integer

Dim k As Integer

k = a Mod b

If k = 0 Then

 f = b

Else

 f = f(b, a mod b)

End If

End Function

Private Sub Command1_Click()

Dim i As Integer, j As Integer

i = Val(Text1.Text)

j = Val(Text2.Text)

Text3.Text = Str(i * j / f(i, j))

End Sub

该程序运行之后,在text1与text2分别输入25 与15,点击command1后在text3上显示的内容为(  )

A . 5 B . 30 C . 75 D . 125
某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
迭代算法与递归算法都需要重复执行某些代码,两者基本相同。
有如下VB程序段:

Private Function f(x As Single, n As Integer)As Single

  If n=0 then

    f=1

  Else

    If n Mod 2=1 then

      f=x*f(x,n\2)

    Else

        f=f(x,n\2)\x

    End If

  End If

End Function

Private Sub Command1_Click( )

  Label1.Caption=Str(f(4,6))

End Sub

程序运行时,单击按钮Command1,标签Label1显示的内容是(  )

A . 1 B . 4 C . 27 D . 64
有如下VB程序段:

Private Sub Command1_Click( )

  Dimi As Integer, s As Integer

  s=0

  For i=1 To 3 Step 2

    s=s+f(i)

  Next i

  Text1. Text=Str(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 . 2 B . 7 C . 9 D . 13
下面代码的输出结果是(   )。

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
斐波那契数列,运用函数递归的方法可以实现,运用迭代的方式也可以实现,而且比函数递归要快许多。下列关于斐波那契数列的迭代表达式正确的是(   )。
A . f,f2,f2=f1+f2 B . f1=f1+f2,f2= C . f1,f2=f2,f1+f2 D . f=f1+f2,f1=f2,f2=f
         是重复反馈过程的活动,其目的通常是逼近所需目标或结果。        是直接或间接地调用函数自身。(   )
A . 枚举  递归  B . 递归  迭代 C . 迭代  递归  D . 递归  迭代