A、B、C、D、E五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三竿,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五分,把多余的一条鱼扔掉,拿走自己的一份。C、D、E依次醒来,也按同样的方法拿鱼。问他们合伙至少捕了多少条鱼
用VB
A、B、C、D、E五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三竿,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五分,把多余的一条鱼扔掉,拿走自己的一份。C、D、E依次醒来,也按同样的方法拿鱼。问他们合伙至少捕了多少条鱼
用VB
用递归。代码如下:
Private Sub Command1_Click()
Text2.Text = countFish(Val(Text1.Text), 1, 1)
End Sub
Private Function countFish(ByVal PNumber As Long, ByVal SYCount As Long, ByVal fishNumber As Long) As Long
If PNumber >= SYCount Then
fishNumber = fishNumber * PNumber + 1
fishNumber = countFish(PNumber, SYCount + 1, fishNumber)
End If
countFish = fishNumber
End Function
其中countFish是递归统计过程,参数:pnumber=捕鱼总人数;sycount是已经执行递归的次数,当该值大于pnumber时,递归返回结果,否则继续计算;fishNumber=捕鱼数量,初始值=1(确保最后一个人最少分到1条鱼)。