VB中用递归函数求和

来源:百度知道 编辑:UC知道 时间:2024/05/24 09:08:25
有道VB题目,老师的要求是:

已知有一串数字序列:1,1,4,10,28……,然后任意输入一个整数n,求该序列前n项的和(也就是说假设输入整数7,那么就求该序列前7项的和)
要求使用到递归函数,用VB编辑

最好能有详细的程序写法,谢谢谢谢咯!

'编程思路:假设数字序列的通项是a(n),前n项的和为f(n),则a(1)=1,a(2)=1,当n>2时,a(n)=(a(n-1)+a(n-2))*2,其实a(n)也就等于f(n-1)+2*f(n-2)。所以求和的公式是f(1)=a(1),f(2)=a(2)+f(1),当n>2时,f(n)=a(n)+f(n-1)=(f(n-1)+f(n-2))*2

Function f(n As Integer) As Double '定义成Double类型,便于n可以取较大的值,否则容易溢出
If n = 1 Then
f = 1
ElseIf n = 2 Then
f = f(n - 1) + 1 '此行若f=1,则整个f(n)是求序列通项a(n)
Else
f = (f(n - 2) + f(n - 1)) * 2
End If
End Function

Private Sub Form_Click()
Dim n As Integer
n = Int(Val(InputBox("请输入n:", , "7")))
MsgBox "数字序列前" & n & "项的和为:" & f(n)
'或用语句Text1.Text=f(n),取得可以复制的计算结果
End Sub

我也正等着这个问题的答案呢,我也先谢谢未来的高手们了,谢谢了!留个言以便找得到这个问题!QQ335679465;zhuxiongliang@163.com

我不懂f(n)=a(n)+f(n-1)为什么会变成这个公式:(f(n-1)+f(n-2))*2

请高手们给个解释吧!谢谢了!

新建一个窗体,在窗体上放一个文本框和一个按钮,放入下面这个代码
Private Sub Command1_Click()
Dim n As Integer
n = Val(Text1.Text)
MsgBox f(n)