题目:有5个学生坐在一起,问第五个学生多少岁?
一个说他比第四个学生大2岁。问第4个学生岁数,他说比第3个学生大2岁。问第3个学生,又说比第2个学生大2岁。问第2个学生,说比第1个学生大2岁。最后问第1个学生,他说是10岁、请第5个学生多大。
解题思路:
想知道求第五个学生的年龄,就必须先知道第四个学生的年龄。要想求第4个学生的年龄必须先知道第3个学生的年龄,而第3个学生的年龄又取决于第2个学生的年龄,第2个学生的年龄取决第1个学生的年龄。而且每一人学生的年龄都比其前1个学生的年龄大2。显然,这是一个递归问题。如果age 是年龄函数,age (n) 代表第n个学生的年龄,可以用下面的式子表示上述关系。
age (5) =age (4) +2
age (4) =age (3) +2
age (3) =age (2) +2
age (2) =age (1) +2
age (1) =10
可以看到,当n>1时,求第n个学生的年龄的公式是相同的,即前一个学生的年龄加2,因此可以用同一个公式表示上述关系。
求解可分成两个阶段:第一阶段是“回溯”, 即将第n个学生的年龄表示为第(n一1) 个学生年龄的函数:age (n-1) +2.而第(n-1) 个学生的年龄仍然不知道,还要“回推”到第(n-2) 个学生的年龄······直到第1个学生的年龄。此时 age (1) 已知,不必再向前推了。然后开始第二阶段,采用递推方法,从第1个学生的已知年龄推算出第2个学生的年龄(12岁)