【发布时间】:2015-05-24 05:23:09
【问题描述】:
我是 Python 新手。这是一个家庭作业问题,但它很难,因为我只有一点 Java 经验。该代码应该使用其递归定义打印第一个加泰罗尼亚数字:
C(n + 1) = C(n) * (4n + 2) / (n + 2)
编辑:
我当前的代码看起来像这样,剩下的唯一问题是使用 savetxt() 方法将我通过此代码获得的所有 C(n) 数字放入一个 txt 中。
import numpy
c = []
c.append(1)
for i in xrange(0,1000000000):
c.append((4*i+2)*c[i]/(i+2))
print (c[i])
if c[i]>= 1000000000:
break
numpy.savetxt("catalan",numpy.c_[i, c[i]])
在最后一个问题解决后,我会尝试答案中建议的其他版本(比如先填充一个零数组)。
【问题讨论】:
-
这里不需要 if 语句来中断循环
-
您只是使用
numpy来导出数据,这似乎效率不高!如果您事先创建了一个空数组(例如使用numpy.zeros),您可以索引所有这些数组。 -
对不起,我忘了添加问题:查找并列出所有小于 1.000.000.000 的 C(n) 的 n 和 C(n)。 for 循环中的范围表明最后一个 C(n) 数不会是十亿分之一 C(n)。我可以细化 for 循环的范围(或使用 while,但我们还没有在课程中使用它,所以我必须弄清楚)。
-
我会尝试使用空数组,jonrsharpe,谢谢!