>
到目前为止,这是我的代码。我迷失了如何输入我的所有价值观 公式。我环顾四周,大多数公式只是n-1和 N-2。我有一个,F1,F2和n-1。
a = (int(input("Value of a: ")))
答案 0 :(得分:1)
大多数公式只是n-1和n-2。我有一个,F1,F2和n-1。
正常' Fibonacci序列以您拥有的内容开头:F(1)
,F(2)
和递归规则以生成n-th
数字:F(N) = F(N-1) + F(N-2)
。您的案例中唯一的变化是递归规则由因子a, b
增加:F(N) = a*F(N-1) + b*F(N-2)
。
return (a*1*(n-1)) + (b*1*(n-2))
一行未反映 a*F(n-1) + b*F(n-2)
( a times (n-1)th element plus b times (n-2)th element
)。 (n-1)
和(n-2)
不是因素,而是索引!F(1) == 1
和F(2) == 1
,则F(3) = a*F(2) + b*F(1)
= a * 1 + b * 1 = a + b = 3.此外,您应该将整个序列输出到n - 号码,而不仅仅是一个号码。以下解决方案使用生成器函数和规范Python Fibonacci赋值x, y = y, x + y
的变体。输出是第一个n
元素的列表:
def fib(a, b):
x, y = 1, 1
while 1: # this will produce fibonacci-like sequence ad infinitum
yield x
x, y = y, b*x + a*y # here is the variation using a, b
def fib_square(a, b, n):
fib_gen = fib(a, b)
return [next(fib_gen) for _ in xrange(n)]
# print ', '.join([str(next(fib_gen)) for _ in xrange(n)])
> fib_square(1, 2, 8)
[1, 1, 3, 5, 11, 21, 43, 85]
# 1, 1, 3, 5, 11, 21, 43, 85