鱼C论坛

 找回密码
 立即注册
查看: 3698|回复: 4

求助大神

[复制链接]
发表于 2023-5-11 22:16:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输出斐波那契数列的前20项,并画一个由数列中的数构成的螺旋线。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-11 22:16:55 | 显示全部楼层
下面是 Python 代码实现:
  1. import turtle
  2. def fibonacci(n):
  3.     if n == 0:
  4.         return 0
  5.     elif n == 1:
  6.         return 1
  7.     else:
  8.         return fibonacci(n-1) + fibonacci(n-2)
  9. # 输出斐波那契数列的前20项
  10. for i in range(20):
  11.     print(fibonacci(i), end=' ')
  12. # 画螺旋线
  13. turtle.speed(0)
  14. turtle.penup()
  15. turtle.goto(0, 0)
  16. turtle.pendown()
  17. x, y = 0, 0
  18. for i in range(20):
  19.     turtle.goto(x, y)
  20.     x += fibonacci(i+1)
  21.     y += fibonacci(i)
  22.     turtle.goto(x, y)
  23. turtle.done()
复制代码

这里使用了递归函数来计算斐波那契数列,然后使用 Turtle 库来画出螺旋线。其中  turtle.speed(0)  表示画笔的速度最快, turtle.penup()  表示抬起画笔, turtle.pendown()  表示放下画笔, turtle.goto(x, y)  表示将画笔移动到坐标为  (x, y)  的位置。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-11 22:26:31 | 显示全部楼层
isdkz 发表于 2023-5-11 22:16
下面是 Python 代码实现:

大神 为啥输出的不是螺旋线啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 22:42:36 | 显示全部楼层
一张不够花、 发表于 2023-5-11 22:26
大神 为啥输出的不是螺旋线啊

用matplotlib画图比较专业

斐波那契数列的前20项如下:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765

因为我是一个文本模型,所以无法直接生成图像。但是我可以给你一个使用Python和matplotlib库生成斐波那契螺旋的代码示例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np

  3. # 定义斐波那契数列
  4. def fibonacci(n):
  5.     fib_seq = [1, 1]
  6.     while len(fib_seq) < n:
  7.         fib_seq.append(fib_seq[-1] + fib_seq[-2])
  8.     return fib_seq

  9. # 生成斐波那契螺旋
  10. def fibonacci_spiral(n):
  11.     fib_seq = fibonacci(n)
  12.     directions = [(1, 0), (0, 1), (-1, 0), (0, -1)]  # 右,上,左,下
  13.     x, y = 0, 0
  14.     spiral_points = [(x, y)]

  15.     for i in range(n):
  16.         dx, dy = directions[i % 4]
  17.         for _ in range(fib_seq[i]):
  18.             x, y = x + dx, y + dy
  19.             spiral_points.append((x, y))

  20.     return spiral_points

  21. # 绘制斐波那契螺旋
  22. def plot_spiral(n):
  23.     points = fibonacci_spiral(n)
  24.     xs, ys = zip(*points)
  25.     plt.figure(figsize=(8, 8))
  26.     plt.plot(xs, ys, 'b-')
  27.     plt.show()

  28. # 绘制前20项的斐波那契螺旋
  29. plot_spiral(20)
复制代码


运行这段代码,你就能得到一个根据斐波那契数列生成的螺旋图形。注意你需要先安装matplotlib和numpy这两个Python库,如果还没有安装,可以通过以下命令安装:

  1. pip install matplotlib numpy
复制代码


请注意,上述代码并不完全精确地模拟自然中的斐波那契螺旋,这需要使用黄金分割和极坐标来实现。但它确实以一种简单的方式显示了斐波那契数列的螺旋性质。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 01:13:44 | 显示全部楼层
输出斐波那契数列的前20项:
  1. fibonacci = [0, 1]
  2. for i in range(2, 20):
  3.     fibonacci.append(fibonacci[i-1] + fibonacci[i-2])
  4. print(fibonacci)
复制代码

画一个由数列中的数构成的螺旋线:
  1. import turtle

  2. # 计算斐波那契数列前20项
  3. fibonacci = [0, 1]
  4. for i in range(2, 20):
  5.     fibonacci.append(fibonacci[i-1] + fibonacci[i-2])

  6. # 绘制螺旋线
  7. turtle.speed(0) # 设置速度为最快
  8. turtle.penup() # 抬起笔
  9. turtle.goto(0, 0) # 去到原点
  10. turtle.pendown() # 落下笔
  11. for i in range(2, 22):
  12.     turtle.forward(fibonacci[i-1]*5) # 移动距离
  13.     turtle.left(90 if i%4==0 else -90) # 转向
  14. turtle.done()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-28 21:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表