python 递归 写平方_Python递归平方

我正试着去了解递归,我想尝试用旋转来绘制递归包含的正方形会很有趣。在

我可以让它迭代地工作,但是当我从内部调用recursive_square函数时,它不起作用。在

有人能解释一下为什么会这样,并指出我在概念上遗漏了什么吗?在from Tkinter import *

import math

WIDTH = 600

HEIGHT = 600

CANVAS_MID_X = WIDTH/2

CANVAS_MID_Y = HEIGHT/2

CENTER = (CANVAS_MID_X, CANVAS_MID_Y)

SIDE = WIDTH - 50

root = Tk()

geometry = "%dx%d+500+100" % (WIDTH, HEIGHT)

root.geometry(geometry)

canvas = Canvas(root, bg="black", height=HEIGHT, width=WIDTH)

canvas.pack()

original_vertices = [

[CANVAS_MID_X - SIDE/2, CANVAS_MID_Y - SIDE/2],

[CANVAS_MID_X + SIDE/2, CANVAS_MID_Y - SIDE/2],

[CANVAS_MID_X + SIDE/2, CANVAS_MID_Y + SIDE/2],

[CANVAS_MID_X - SIDE/2, CANVAS_MID_Y + SIDE/2],

]

def recursive_square(angle=0, points=original_vertices, center=CENTER, side=SIDE):

if angle < 45:

angle = math.radians(angle)

cos_val = math.cos(angle)

sin_val = math.sin(angle)

cx, cy = center

offset = (side * math.tan(angle))/(1 + math.tan(angle))

new_points = [[x, y] for x,y in points]

new_points[0][0] += offset

new_points[1][1] += offset

new_points[2][0] -= offset

new_points[3][1] -= offset

canvas.create_polygon(new_points, outline="red")

#recursive_square(angle + 5)

for angle in xrange(0,45,5): # iterative version

recursive_square(angle)

#recursive_square()

mainloop()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值