【发布时间】:2015-03-07 06:26:56
【问题描述】:
我是编程新手,不知道如何看到这段代码实现,而不必手动对迭代进行编程。我知道它应该/可以调用自身来继续算法,我只是想不通出如何。一个大问题是“n”每增加一次(当 n
我提前道歉,我不太清楚我正在尝试做什么,但可以提供任何细节,我刚刚开始在计算机编程方面爬行。
这是代码,我会根据要求发送它生成的图像(我试图发布它,但我没有足够的“街头信誉”... (我称这第一个程序为 x_sub_i)
from graphics import *
def fib(n):
if n==0:
return 0
elif n==1:
return 1
else:
return fib(n-1)+fib(n-2)
def f(n,k):
x = k/2*((-1)**(n+1)*fib(n)*5**.5+(-1)**n*(fib(n+1)+fib(n-1)))
return x
def p(n,k):
for i in range(1,n+1):
pt = Point(i, f(i,k))
pt.draw(win)
print (f(i,k))
from x_sub_i import *
def a(n,k):
win = GraphWin('Fractal', 800, 600)
win.setCoords(0.0,n,k,0.0)
for i in range(1,n+1):
x1 = f(i,k)
pt = Point(x1,i)
pt.draw(win)
line1 = Line(pt,Point(f((i+1),k), i+1))
line1.draw(win)
print(x1)
for j in range(1,i-1):
x2 =f(j,k)
x2 = x1 + x2
pr = Point(x2,i)
pr.draw(win)
line2 = Line(pr,Point(f(j,k)+f(i+1,k), i+1))
line2.setFill('black')
line2.draw(win)
print(x2)
for h in range(1,j-1):
x3 = f(h,k)
x3 = x3 + x2
ps = Point(x3,i)
ps.draw(win)
line3 = Line(ps,Point(f(h,k)+f(j,k)+f(i+1,k), i+1))
line3.setFill('purple')
line3.draw(win)
print(x3)
for m in range(1,h-1):
x4 = f(m,k)
x4 = x4 + x3
pq = Point(x4,i)
pq.draw(win)
line4 = Line(pq,Point(f((m),k)+f(h,k)+f(j,k)+f(i+1,k), i+1))
line4.setFill('blue')
line4.draw(win)
print(x4)
for q in range(1,m-1):
x5 = f(q,k)
x5 = x5 + x4
pu = Point(x5,i)
pu.draw(win)
line5 = Line(pu,Point(f((q),k)+f(m,k)+f(h,k)+f(j,k)+f(i+1,k), i+1))
line5.setFill('red')
line5.draw(win)
print(x5)
for a in range(1,q-1):
x6 =f(a,k)
x6 = x5 + x6
pa = Point(x6,i)
pa.draw(win)
line6 = Line(pa,Point(f((q),k)+f(m,k)+f(h,k)+f(j,k)+f(a,k)+f(i+1,k), i+1))
line6.setFill('orange')
line6.draw(win)
print(x6)
for b in range(1,a-1):
x7 = f(b,k)
x7 = x7 + x6
pb = Point(x7,i)
pb.draw(win)
line7 = Line(pb,Point(f((q),k)+f(m,k)+f(h,k)+f(j,k)+f(a,k)+f(b,k)+f(i+1,k), i+1))
line7.setFill('green')
line7.draw(win)
print(x7)
for c in range(1,b-1):
x8 = f(c,k)
x8 = x8 + x7
pc = Point(x8,i)
pc.draw(win)
line8 = Line(pc,Point(f((q),k)+f(m,k)+f(h,k)+f(j,k)+f(a,k)+f(b,k)+f(c,k)+f(i+1,k), i+1))
line8.setFill('pink')
line8.draw(win)
print(x8)
for d in range(1,c-1):
x9 = f(d,k)
x9 = x9 + x8
pd = Point(x9,i)
pd.draw(win)
line9 = Line(pd,Point(f((q),k)+f(m,k)+f(h,k)+f(j,k)+f(a,k)+f(b,k)+f(c,k)+f(d,k)+f(i+1,k), i+1))
line9.setFill('grey')
line9.draw(win)
print(x9)
这是它使用不同颜色生成的图像。如果您运行上面的代码并更改代码中分配的颜色,您应该会发现类似的结果。
![分形][1]
任何建议或帮助将不胜感激!我可以提供我在算法的数学方面拥有的任何和所有信息,一段时间以来,它一直是我的宠物项目,我只想看到它运行......高效且独立。
谢谢;)
【问题讨论】:
-
由于您不能在帖子中包含图片,您可以编辑您的帖子以包含指向图片的链接吗?我还想从高层次的角度了解更多关于算法的信息。仅通过查看代码很难判断代码应该做什么。这个分形有一个名称或众所周知的算法,您可以将我们链接到吗?
-
使用一个字母的变量名不是一个好主意,因为它很难告诉你代码应该做什么——对你和其他人一样。如果你把它放在一边,一个月后再回来,你将不知道你想要完成什么。无论如何,这里似乎需要一个递归函数。
-
graphics模块...你能给你正在使用的graphics模块提供参考吗? -
...
x_sub_i模块也无处可寻,我投降:祝你的问题好运 -
对不起,前两段代码是x_sub_i,如下所示。
标签: python iteration fibonacci fractals