一,认识递归函数
1,什么是递归?
递归的工作原理是,如果函数需要处理的问题大小合适,则直接求解并返回结果,
否则将问题分解成两个或多个更小的子问题,并对子问题进行相同的处理,
直到问题无法分解为止
2,什么是递归函数:
递归函数(recursive function)是指在函数体中可以调用自己的函数
3,语法
def fn():
# ...
if condition:
# 停止自我调用
else:
fn()
# ...
4,递归函数的优点和缺点
递归函数的优点:它们可以帮助程序员在处理复杂问题时提供一种简单且易懂的解决方案。
递归函数使代码具有可读性和可重用性,
而且可以使用递归函数解决使用其他方法难以处理的问题。
递归函数的缺点: 递归函数可能会在运行时占用较多的系统资源,
因为它们需要在堆栈上存储多个函数调用
其次,递归函数可能导致代码变得不容易理解,
因为它具有一定的复杂度
二,年龄问题的题目与解析
1,题目:
有5个人坐在一起,
问第5个人多少岁,他说比第4个人大2岁。
问第4个人多少岁,他说比第3个人大2岁。
问第3人多少岁,他说比第2个人大2岁。
问第2个人多少岁,他说比第1个人大2岁。
最后问第1个人多少岁,他说他是10岁。
编写程序,求出当输入某个人时其对应的年龄?
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
得到的数学表达式:
说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/03/16/python-suan-fa-nian-ling-wen-ti/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: [email protected]
三,代码实现
1,递归算法:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 递归函数
# n: 第几个人
def age(n):
if n = = 1 : # 如果是第一个人,返回10岁,结束递归
x = 10
else : # 否则,返回前一个人的年龄+2
x = age(n - 1 ) + 2
return x
n = int ( input ( "请输入n值:" )) # n表示第几个人
# 调用age()函数,计算第n个人的年龄
print (f "第{n}个人的年龄为:{age(n)}岁" )
|
运行结果:
请输入n值:5
第5个人的年龄为:18岁
2, for循环解决:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 函数求年龄
# n: 第几个人
def age(n):
a = 0 # 年龄
for i in range ( 1 , n + 1 ):
if i = = 1 : # 第一个人的年龄为10
a = 10
else :
a + = 2 # 第一个人之外的人依次递增2岁
return a
n = int ( input ( "请输入n值:" )) # n表示第几个人
# 调用age()函数,计算第n个人的年龄
print (f "第{n}个人的年龄为:{age(n)}岁" )
|
运行结果:
请输入n值:5
第5个人的年龄为:18岁
标签:10,个人,递归函数,python,age,算法,年龄,多少岁
From: https://www.cnblogs.com/architectforest/p/18193373