实验7 Python递归

实验目的

  1. 理解递归和迭代的区别和联系
  2. 掌握递归函数的编写方法
  3. 学会分析问题并能够使用递归来提出解决方案

实验内容

1. 找出列表中的最大数

编写一个递归函数,返回一个列表中的最大数。编写一个测试程序提示用户输入一个整数列表并显示其中最大的元素

# 1.	找出列表中的最大数
# 编写一个递归函数,返回一个列表中的最大数。编写一个测试程序提示用户输入一个整数列表并显示其中最大的元素

# 12 34 45 66 32 24 67

def max_num(lst):
    if len(lst) == 0:
        return -1
    elif len(lst) == 1:
        return lst[0]
    else:
        if lst[0] > max_num(lst[1:]):
            return lst[0]
        else:
            return max_num(lst[1:])


def main():
    lst = list(map(int, input("请输入一个整数列表:").split()))
    if max_num(lst) == -1:
        print("列表为空")
    else:
        print(max_num(lst))


if __name__ == '__main__':
    main()

2. 以逆序输出一个整数中的数字

编写一个递归函数,使用下面的函数头在控制台上以逆序显示一个整型值。

def reverse_display(value):

例如,调用reverse_display(12345),输出的是54321。编写一个测试程序,提示用户输入一个整数然后逆序输出这个整数的个位数字。

# 2.	以逆序输出一个整数中的数字
# 编写一个递归函数,使用下面的函数头在控制台上以逆序显示一个整型值。
# def reverse_display(value):
# 例如,调用reverse_display(12345),输出的是54321。编写一个测试程序,提示用户输入一个整数然后逆序输出这个整数的个位数字。

def reverse_display(value):
    if value > 9:
        print(value % 10, end="")
        reverse_display(value // 10)
    else:
        print(value, end="")


def main():
    value = int(input("请输入一个整数:"))
    reverse_display(value)


if __name__ == '__main__':
    main()

3. 科赫雪花分形

编程实现科赫雪花分形,提示用户输入阶数并显示对应的分形。

科赫雪花是根据一位著名的瑞典数学家的名字命名的,按如下方式产生:

  1. 从一个等边三角形开始,将其作为0阶(或0级)科赫分形,如图a所示。
  2. 将图形中的每条边分成三个相等的线段,以中间的线段作为底边向外画一个等边三角形,产生1阶科赫分形,如图b所示。
  3. 重复步骤(2)产生2阶科赫分形、3阶科赫分形、……、如图c、图d所示。

# 3.	科赫雪花分形
# 编程实现科赫雪花分形,提示用户输入阶数并显示对应的分形。
# 科赫雪花是根据一位著名的瑞典数学家的名字命名的,按如下方式产生:
# (1)	从一个等边三角形开始,将其作为0阶(或0级)科赫分形,如图a所示。
# (2)	将图形中的每条边分成三个相等的线段,以中间的线段作为底边向外画一个等边三角形,产生1阶科赫分形,如图b所示。
# (3)	重复步骤(2)产生2阶科赫分形、3阶科赫分形、……、如图c、图d所示。
# import os
import turtle


def koch(size, order):
    if order == 0:
        turtle.fd(size)
    else:
        for angle in [0, 60, -120, 60]:
            turtle.left(angle)
            koch(size / 3, order - 1)


def main():
    order = eval(input("请输入阶数:"))
    turtle. Setup(800, 800)
    turtle. Speed(0)
    turtle.penup()
    turtle.goto(-200, 200)
    turtle.pendown()
    turtle.pensize(2)
    koch(400, order)
    turtle.right(120)
    koch(400, order)
    turtle.right(120)
    koch(400, order)
    turtle.hideturtle()
    turtle.mainloop()


if __name__ == '__main__':
    main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值