一、问题描述
有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()函数,这就是函数的直接递归调用
例如:
def f(x):
......
y = f(n)
# 调用自身
......
return y
(II)间接递归调用,即函数间接调用本身。定义了两个函数f1()和f2()。在调用f1()函数的过程中,f1()又调用了函数f2(), 而在调用函数f2()的过程中,又调用了f1()
例如:

文章描述了一个基于递归的年龄计算问题,其中每个人比前一个人年长2岁,已知第1个人是10岁。通过递归函数`age(n)`实现计算任意人的年龄,当n等于1时返回10,否则返回`age(n-1)+2`。在主函数中,用户输入n值,程序计算并打印第n个人的年龄。
最低0.47元/天 解锁文章
1091

被折叠的 条评论
为什么被折叠?



