📜  打印 Aitken 数组的Python程序

📅  最后修改于: 2022-05-13 01:55:36.056000             🧑  作者: Mango

打印 Aitken 数组的Python程序

给定一个数字 n。任务是将 Aikten 的数组打印到 n。

例子:

Input: 5
Output:
[1]
[1, 2]
[2, 3, 5]
[5, 7, 10, 15]
[15, 20, 27, 37, 52]


Input: 7
Output:
[1]
[1, 2]
[2, 3, 5]
[5, 7, 10, 15]
[15, 20, 27, 37, 52]
[52, 67, 87, 114, 151, 203]
[203, 255, 322, 409, 523, 674, 877]

要首先打印它,我们按照以下步骤操作:

  • 我们在第一行写 1。
  • 接下来,我们用前一行的最右边的值填充每一行的最左边的值。
  • 每行的下一个元素由简单规则填充,即特定行的每个元素是该行左侧的值与同一位置上一行的值的总和。
    为了更好地理解,让我们考虑上面例子的第三行,由元素 2、3、5 组成。这一行的最左边的值是上面行的最右边的值,即 2。下一个值 3 是值的总和如果该行 (2) 和上一行 (1) 的相同位置的值,则左侧。同样,5 是 3 和 2 的总和。

下面是实现。

# Python program to print
# Aitken's array
  
  
from queue import Queue
from functools import reduce, lru_cache
  
  
# for dynamic programming
# Recursive function to print the 
# Aitken's array.
@lru_cache()
def rec(n):
      
    # Base case
    if n == 1:
        print([1])
        return [1]
      
    array =  [rec(n-1)[-1]]
      
    for k in range(n-1):
        array.append(array[k] + rec(n-1)[k])
  
    print(array)
  
    return array
  
# Driver's code 
rec(7)

输出:

[1]
[1, 2]
[2, 3, 5]
[5, 7, 10, 15]
[15, 20, 27, 37, 52]
[52, 67, 87, 114, 151, 203]
[203, 255, 322, 409, 523, 674, 877]