0
0

はじめに

  • リスト内包表記でフィボナッチ,トリボナッチ数列を生成してきた
  • 今回は一般的に$k = 2,3,...$が与えられたときにk-ナッチ数列をリスト内包表記で生成してみる

k-ナッチ数列とは

  • 初項$a_1 = 0$,第$k$項$a_k = 1$,その間のすべての項の値が0
  • $n>k$のとき,$a_n = a_{n-1} + a_{n-2}$を満たす数列

実装

l = []
k = int(input('input integer larger than 1 >> '))
[l.append(sum(l[(len(l)-k):])) if i > k else (l.append(1) if i == k else l.append(0)) for i in range(100)]
print(str(k)+"-nacci\n",l)

実行結果

  • $k = 2$としたときの実行結果

    input integer larger than 1 >> 2
    2-nacci
     [0, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025, 20365011074, 32951280099, 53316291173, 86267571272, 139583862445, 225851433717, 365435296162, 591286729879, 956722026041, 1548008755920, 2504730781961, 4052739537881, 6557470319842, 10610209857723, 17167680177565, 27777890035288, 44945570212853, 72723460248141, 117669030460994, 190392490709135, 308061521170129, 498454011879264, 806515533049393, 1304969544928657, 2111485077978050, 3416454622906707, 5527939700884757, 8944394323791464, 14472334024676221, 23416728348467685, 37889062373143906, 61305790721611591, 99194853094755497, 160500643816367088, 259695496911122585, 420196140727489673, 679891637638612258, 1100087778366101931, 1779979416004714189, 2880067194370816120, 4660046610375530309, 7540113804746346429, 12200160415121876738, 19740274219868223167, 31940434634990099905, 51680708854858323072, 83621143489848422977, 135301852344706746049]
    

  • $k = 20$としたときの実行結果

    input integer larger than 1 >> 20
    20-nacci
     [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048575, 2097149, 4194296, 8388588, 16777168, 33554320, 67108608, 134217152, 268434176, 536868096, 1073735680, 2147470336, 4294938624, 8589873152, 17179738112, 34359459840, 68718886912, 137437708288, 274875285504, 549750308864, 1099500093440, 2198999138305, 4397996179461, 8795988164626, 17591967940664, 35183919104160, 70367804654000, 140735542199392, 281470950181632, 562941631929088, 1125882726990080, 2251764380244480, 4503526613018624, 9007048931098624, 18014089272324096, 36028161364910080, 72056288370360320, 144112508021833728, 288224878605959168, 576449482336632832, 1152898414922956800, 2305795730345820160, 4611589261692502015, 9223174125388824569, 18446339454789484512, 36892661317611028360, 73785287451302952560, 147570504534801251120, 295140868334060302848, 590281455197170424064, 1180562347452708919040, 2361123569022690848000, 4722244886281001451520, 9444485269035389884416, 18888961531021848670208, 37777905047954425016320, 75555774067747485122560, 151111476079206599884800, 302222808045905177935872]
    

リスト内包表記を用いてk-ナッチ数列を一般化することができた!

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0