当前位置: 首页 > news >正文

递归函数练习题

学生年龄问题

题目描述

有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。问第4个学生岁数,他说比第3个学生大2岁。问第3个学生,又说比第2个学生大2岁。问第2个学生,说比第1个学生大2岁。最后问第1个学生,他说是10岁。请问第5个学生多大。

输出示例

输入:5
输出:18

实现代码

def student_age(n):"""计算第n个学生的年龄参数:n -- 学生编号(从1开始)返回:第n个学生的年龄"""# 基本情况if n == 1:return 10# 递归情况else:return student_age(n - 1) + 2# 测试
print(student_age(5))  # 输出: 18

1到N的累加

题目描述

用递归的方法求1+2+3+……+N的值。

输出示例

输入:5
输出:15  

实现代码

def sum_to_n(n):"""计算从1到n的自然数之和(递归版本)参数:n -- 正整数返回:1到n的自然数之和"""# 基本情况if n == 1:return 1# 递归情况else:return n + sum_to_n(n - 1)# 测试
print(f"1到5的和: {sum_to_n(5)}")   # 输出: 15

斐波那契数列

题目描述

用递归函数输出斐波那契数列第n项。0,1,1,2,3,5,8,13……

输出示例

输入:3
输出:1

实现代码

def fibonacci(n):if n == 1:return 0elif n == 2:return 1# 递归情况else:return fibonacci(n - 1) + fibonacci(n - 2)# 测试
print(f"fibonacci(3) = {fibonacci(3)}")  # 输出: 1

阿克曼(Ackmann)函数

题目描述

阿克曼(Ackmann)函数A(m,n)中,m,n定义域是非负整数(m≤3,n≤10),函数值定义为:

示例

print(akm(2, 3))  # 输出: 9

实现代码

def ackermann(m, n):# 输入验证if m < 0 or n < 0:raise ValueError("m和n必须是非负整数")if m > 3 or n > 10:raise ValueError("超出定义域:m ≤ 3, n ≤ 10")# 基本情况1: m = 0if m == 0:return n + 1# 基本情况2: m > 0 且 n = 0elif m > 0 and n == 0:return ackermann(m - 1, 1)# 递归情况: m > 0 且 n > 0else:return ackermann(m - 1, ackermann(m, n - 1))print(ackermann(2, 3))  # 输出: 9

汉诺塔问题

题目描述

编写一个递归函数来解决汉诺塔问题。汉诺塔问题是将 n 个盘子从源柱 A 移动到目标柱 C,借助辅助柱 B,移动过程中需要遵守以下规则:

  1. 每次只能移动一个盘子

  2. 任何时候大盘子不能放在小盘子上面

输出示例

输入:n = 3
输出:移动步骤序列

实现代码

def hanoi(n, source, target, auxiliary):"""解决汉诺塔问题参数:n -- 盘子数量source -- 源柱名称target -- 目标柱名称auxiliary -- 辅助柱名称"""if n == 1:print(f"移动盘子 1 从 {source} 到 {target}")return# 将 n-1 个盘子从源柱移动到辅助柱hanoi(n - 1, source, auxiliary, target)# 将最大的盘子从源柱移动到目标柱print(f"移动盘子 {n} 从 {source} 到 {target}")# 将 n-1 个盘子从辅助柱移动到目标柱hanoi(n - 1, auxiliary, target, source)# 测试
print("汉诺塔问题,3个盘子:")
hanoi(3, 'A', 'C', 'B')

http://www.dtcms.com/a/594751.html

相关文章:

  • [設計模式]設計模式原則
  • 【RK3568】TFTP+NFS启动文件系统
  • 网站建设 中标都江堰建设局网站
  • 网站开站备案外贸营销推广方案
  • 怎样注册网站中文域名免费个人网站 上传
  • 【Janet】控制流
  • 网站建设哪家公司最好免费医院网页模板
  • 【App开发】05:Android Studio项目配置文件全解析( App 项目结构)
  • 合并两个有序链表 --- 递归
  • 编译立创S3小智语音机器人+修改表情
  • 网站的文件夹结构承包工地的网站
  • Simulink从入门到入门--热水器1
  • 【开题答辩实录分享】以《云音乐小程序设计与开发》为例进行答辩实录分享
  • 三生团队网站找谁做的国人原创wordpress主题
  • 京东云网站建设做网站四百全包
  • 深圳做男装什么网站容易找工网站建设总体需求报告
  • Java-167 Neo4j CQL 实战:CREATE/MATCH 与关系建模速通 案例实测
  • 基于突发性链路感知的自适应链路质量估计算法matlab仿真
  • 开发网站广州a站app
  • 一款3.8V to 55V输入,提供2A电流的DC-DC降压芯片推荐
  • OpenAI responses使用教程(三) ——Responses create python SDK 介绍
  • 北京运营推广网站建设黄骅港赶海推荐个好地方
  • 珠海网站建设公司哪个好最近发生的新闻事件
  • win10 配置下载安装 Office LTSC 专业增强版 2024
  • K8S RD: Kubernetes运维核心指南:污点调度、网络架构与全链路故障排查实战
  • 怎么做徐州市环保局网站备案表网站设置flash
  • 代做施组 方案的网站上海企业制作网站有哪些内容
  • 网站的盈利方法微信上做网站编辑
  • 14.日志封装和线程池封装
  • 呼和浩特做网站哪家好网站上线备案