求两个整数的最大公约数。要求使用递归和非递归两种办法实现。 > 2、编写程序,要求通过自定义函数,实现学生基本信息的输入和输出,以及按学号查询学生基本信息。学生基本信息包含:学号、姓名、性别、年龄、学院、
时间: 2024-10-27 18:05:22 浏览: 25
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
求两个整数的最大公约数(Greatest Common Divisor,简称GCD),可以采用递归和迭代两种常见的方法。
**递归实现:**
```python
def gcd_recursive(a, b):
if b == 0:
return a
else:
return gcd_recursive(b, a % b)
# 示例
a = int(input("请输入第一个整数:"))
b = int(input("请输入第二个整数:"))
print(f"最大公约数为:{gcd_recursive(a, b)}")
```
**非递归实现(欧几里得算法):**
```python
def gcd_iterative(a, b):
while b != 0:
a, b = b, a % b
return a
# 示例
a = int(input("请输入第一个整数:"))
b = int(input("请输入第二个整数:"))
print(f"最大公约数为:{gcd_iterative(a, b)}")
```
至于学生信息管理的问题,你可以创建一个`Student`类,并提供相应的属性(如`__init__`方法用于初始化,`display_info`方法用于打印学生的详细信息)。对于按学号查询的功能,可以添加一个查找函数,接受学号作为参数并返回相应的学生实例:
```python
class Student:
def __init__(self, id, name, gender, age, college):
self.id = id
self.name = name
self.gender = gender
self.age = age
self.college = college
def display_info(self):
print(f"学号:{self.id}, 姓名:{self.name}, 性别:{self.gender}, 年龄:{self.age}, 学院:{self.college}")
# 输入操作
def input_student_info():
student_id = input("请输入学号:")
name = input("请输入姓名:")
gender = input("请输入性别:")
age = int(input("请输入年龄:"))
college = input("请输入学院:")
return Student(student_id, name, gender, age, college)
# 查询操作
def search_by_id(students, target_id):
for student in students:
if student.id == target_id:
student.display_info()
break
else:
print("未找到该学号的学生")
# 示例
students_list = [input_student_info(), input_student_info()] # 可以添加更多学生
target_id = int(input("请输入查询的学号:"))
search_by_id(students_list, target_id)
```
阅读全文