编程小博士(20):找出规律应用循环
软件世界
问:我在编程学习中,经常会遇到用循环来解决问题,而使用循环最关键的就是要找出循环规律,我想问问找循环规律有什么简单易用的方法没有?
小博士:不同的循环题目,其规律是不同的,找规律时关键是耐心,第二点是要通过变量的形式来思考,找出外表相似的形式,如果直接找不出,还要学会创造这种形式。请看下面的示例。
示例:生小兔的故事
有一对小兔,从第三个月开始每月生一对小兔,生下的每一对小兔长到3个月以后每月又生一对小兔。假设这些兔子都不死亡,问一年后有多少对兔子?
循环解决方法分析
刚遇到这个问题的时候,我们觉得它挺有趣的,罗列一下各种情况。
第1个月的兔子有1对;
第2个月的兔子仍然是1对;
第3个月可就变了,兔子开始生小兔,加上原有的,兔子数有1+1=2对;
第4个月时头一对兔子又生了一对,所以连大兔加小兔是1+2=3对;
……
现在规律已经出现,从第3个月开始,兔子对数正好等于前两个月的兔子对数的总和了。
我们要的循环规律就基本形成了。从第3个月开始有了规律,循环也正是从这里开始。我们要编的程序,就是对上述的规律的模仿。从示例中我们不难看出,两个月的兔子对数就是循环中要用到的两个量,并且这两个量动态地变化着,现在,我们设头两个月的兔子数为f1、f2,中间变量为d,用来存放上个月的兔子对数,每个月的总的兔子对数存放在f2中。这样程序就能顺水推舟地写出来了。
源程序
Private Sub CmdCircle_Cli
ck() '循环方法解决
TxtNum.Text = "" '初始化输入框
f1 = 1
f2 = 1
For i = 3 To 12
d = f2
f2 = f2 + f1
f1 = d
Next i
'输出
TxtNum.Text = TxtNum.Text + Str(f2) + vbCr + vbLf
End Sub
小结
这个题目总结起来比较简单。它的规律就是从第3个月开始,兔子对数正好等于前两个月的兔子对数的总和。这也就是在数学界赫赫有名的Fibonacci数列。