python算法:年龄问题

news/2024/9/21 4:34:42

一,认识递归函数

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
说明:作者:刘宏缔 邮箱: 371125307@qq.com

三,代码实现

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岁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31736.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Nginx配置https(证书)报错

一、nginx配置问题 nginx配置https的时候报错:nginx: [emerg]unknown directive35+GAN "ssl" in /usr/local/nginx/conf/nginx.conf:28  或者nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/loca.... 出现这个问题的时候可以…

如何基于原名称批量重命名(格式化)文件(夹)名

首先,需要用到的这个工具:度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 现在需要把这些文档的文件名处理,格式为:4位数字 - 6位数字 - 10位数字,办法如下: 打开工具 切换到 文件批量复制 模块,快捷键如图找到右下角的 重命名 按钮,点开把要处理的这些文件拖入进去(如…

python算法:谁在说谎?

一,for循环: 1,功能:重复执行同一段代码语法: for index in range(n): # 循环体代码 index : 用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列 流程图:2,应用 range可以同时指定start 和stop,用for遍历并打印1 2 3 4# 指定 start和stop # print的参数 e…

无规律快速批量重命名文件(夹)-固定命名

首先,需要用到的这个工具:度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 这里有1万多个文件,要命名成无规律的、不同的文件名 目标文件名里面的是上面已经修正数据的目标 一句话思路:提取全部目标名称,放到要改动的地方去 打开工具,切换到“文件批量复制” 借助这个版块…

python算法: 棋盘上的麦粒(舍罕王赏麦)

一,for循环: 1,功能:重复执行同一段代码语法: for index in range(n): # 循环体代码 index : 用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列 流程图:2,应用 range可以同时指定start 和stop,用for遍历并打印1 2 3 4# 指定 start和stop # print的参数 e…

python算法:杨辉三角

一,认识递归函数 1,什么是递归?递归的工作原理是,如果函数需要处理的问题大小合适,则直接求解并返回结果,否则将问题分解成两个或多个更小的子问题,并对子问题进行相同的处理,直到问题无法分解为止 2,什么是递归函数:递归函数(recursive function)是指在函数体中可以…

python算法:百钱买百鸡

一,for循环: 1,功能:重复执行同一段代码语法: for index in range(n): # 循环体代码 index : 用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列 流程图:2,应用 range可以同时指定start 和stop,用for遍历并打印1 2 3 4# 指定 start和stop # print的参数 e…

python算法:鸡兔同笼

一,for循环: 1,功能:重复执行同一段代码语法: for index in range(n): # 循环体代码 index : 用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列 流程图:2,应用 range可以同时指定start 和stop,用for遍历并打印1 2 3 4# 指定 start和stop # print的参数 e…