鱼C论坛

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

求助大神

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

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

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

x
输出斐波那契数列的前20项,并画一个由数列中的数构成的螺旋线。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-11 22:16:55 | 显示全部楼层
下面是 Python 代码实现:
import turtledef fibonacci(n):    if n == 0:        return 0    elif n == 1:        return 1    else:        return fibonacci(n-1) + fibonacci(n-2)# 输出斐波那契数列的前20项for i in range(20):    print(fibonacci(i), end=' ')# 画螺旋线turtle.speed(0)turtle.penup()turtle.goto(0, 0)turtle.pendown()x, y = 0, 0for i in range(20):    turtle.goto(x, y)    x += fibonacci(i+1)    y += fibonacci(i)    turtle.goto(x, y)turtle.done()
这里使用了递归函数来计算斐波那契数列,然后使用 Turtle 库来画出螺旋线。其中  turtle.speed(0)  表示画笔的速度最快, turtle.penup()  表示抬起画笔, turtle.pendown()  表示放下画笔, turtle.goto(x, y)  表示将画笔移动到坐标为  (x, y)  的位置。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

大神 为啥输出的不是螺旋线啊
想知道小甲鱼最近在做啥?请访问 -> 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库生成斐波那契螺旋的代码示例:
import matplotlib.pyplot as plt
import numpy as np

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

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

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

    return spiral_points

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

# 绘制前20项的斐波那契螺旋
plot_spiral(20)

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

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

使用道具 举报

发表于 2023-5-13 01:13:44 | 显示全部楼层
输出斐波那契数列的前20项:
fibonacci = [0, 1]
for i in range(2, 20):
    fibonacci.append(fibonacci[i-1] + fibonacci[i-2])
print(fibonacci)
画一个由数列中的数构成的螺旋线:
import turtle

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

# 绘制螺旋线
turtle.speed(0) # 设置速度为最快
turtle.penup() # 抬起笔
turtle.goto(0, 0) # 去到原点
turtle.pendown() # 落下笔
for i in range(2, 22):
    turtle.forward(fibonacci[i-1]*5) # 移动距离
    turtle.left(90 if i%4==0 else -90) # 转向
turtle.done()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 07:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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