Как заменить цикл на рекурсию в python?

У меня возникла проблема.

Как заменить два цикла, на одну функцию которая содержит рекурсию.

for i in range(0,1):
    for j in range(1,len(A)):

Вот весь код.

import numpy as np

lest =0
def matrix(B,z):
    result = 1 in B
    return "Номер строки "+str(z)+", найдено совпадений: "+str(result)+ " строке"
 
A = np.array([[1, 4, 5, 0], 
    [-5, 8, 9, 1],
    [1, 7, 11, 19],
    [1, 2, 4, 1]])
print("Сравнения с первой строкой:\n")
for i in range(0,1):
    for j in range(1,len(A)):
        b = list(map(lambda x, y: lest+1 if x == y  else lest+0,A[i],A[j]))
        print(matrix(b,j+1))

Спасибо за внимания.


Ответы (1 шт):

Автор решения: asanisimov

Не совсем понимаю необходимость, можно просто убрать первый цикл, и все сравнивать с 1ым элементом, но если очень нужна рекурсия, то вот. Делает то же самое, только рекурсивно.

def matrix(B, z):
    result = 1 in B
    # не желательно форматировать строку сложением строк.
    return "Номер строки {}, найдено совпадений: {} строке".format(str(z), str(result))  


A = np.array([[1, 4, 5, 0],
              [-5, 8, 9, 1],
              [1, 7, 11, 19],
              [1, 2, 4, 1]])
print("Сравнения с первой строкой:\n")


def work(mtx: np.array) -> None:
    lest = 0
    len_mtx = len(mtx)
    if len_mtx == 2:  # граничный случай
        last = mtx[-1]
        b = list(map(lambda x, y: lest + 1 if x == y else lest, mtx[0], last))
        print(matrix(b, 2))
    else:   # рекурсивный случай
        last, mtx_n = mtx[-1], mtx[:-1]
        b = list(map(lambda x, y: lest + 1 if x == y else lest, mtx[0], last))
        work(mtx_n)
        print(matrix(b, len_mtx))

work(A)
→ Ссылка