2016-05-22 11 views
0

>入力A、B、およびnはフィボナッチ数列のための

はここで、これまでに私のコードです。私はすべての私の値を に入力する方法については迷っています。私は周りを見回し、ほとんどの数式はn-1と n-2です。私は、F1、F2、およびn-1を持っています。

a = (int(input("Value of a: "))) 
+0

あなたはすべてが式に差し込まれることになっているか私を見ることができますか? – user6366545

+0

「通常の」フィボナッチシーケンスの作業コードを表示できますか? – Jasper

+0

@ジャスパーそれは再帰的でなければならないとはどこから言いますか? – schwobaseggl

答えて

1

ほとんどは公式にはちょうどn-1およびn-2です。私は、F1、F2、およびn-1を持っています。

「通常の」フィボナッチ数列は、あなたが持っているもので始まる:F(N) = F(N-1) + F(N-2)n-th番号を生成するためにF(1)F(2)と再帰的ルール。あなたのケースの唯一の変更は、再帰的ルールが因子a, bF(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) == 1F(2) == 1の場合、F(3) = a*F(2) + b*F(1) = a * 1 + b * 1 = a + b = 3さらに、シーケンス全体を1つの数値でなくn番目の数値に出力することになっています。

次の解決策では、ジェネレータ関数と正規のPythonフィボナッチ割り当て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 
+0

私は、基本に問題があると思われる人に、このような巧妙な解決策を提案しません。そして、あなたはOPが求めるものを実装していません。 – Jasper

+0

@Jasper更新されました。 OPは何を求めているのでしょうか? – schwobaseggl

+0

OPの表記はあまり明確ではありませんが、私は彼が探しているものだと思います。 – Jasper

関連する問題