一、问题描述
有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁。问第4个人多少岁,他说比第3个人大2岁。问第3人多少岁,他说比第2个人大2岁。问第2个人多少岁,他说比第1个人大2岁。最后问第1个人多少岁,他说他是10岁。编写python程序,求出当输入某个人时其对应的年龄。
二、问题分析
1、该问题是一个递归问题
2、要求出第5个人的年龄,则必须先知道第4个人的年龄,显然第4个人的年龄也是未知的, 但可以由第3个人的年龄推算出来。而想知道第3个人的年龄,又必须先知道第2个人的年龄,而第2个人的年龄取决于第1个人的年龄。 又已知每个人的年龄都比其前一个人的年龄大2,因此根据题意,可得到如下几个表达式:
age(5)=age(4)+2
age(4)=age(3)+2
age(3)=age(2)+2
age(2)=age(1)+2
age(1)=10
用数学公式表达为:
age(n)=age(n-1)+2,n>1
age(n)=10,n=1
三、算法设计
(1)函数递归调用的基础知识:
a.函数递归调用的定义:如果在调用一个函数的过程中又出现直接或间接地调用该函数本身,则称为函数的递归调用
b.程序中递归调用的方式:
(I)直接递归调用,即函数直接调用本身。在调用函数f()的过程中,又要调用f()函数,这就是函数的直接递归调用
例如: