использовать рекурсивную функцию в Python - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь использовать рекурсивную функцию на Python, у меня есть эта матрица W:

[[ 13.          14.   ]
 [ 12.          15.   ]
 [  0.           4.   ]
 [  3.           6.   ]
 [  7.           8.   ]
 [ 11.          18.   ]
 [ 10.          17.   ]
 [  2.          23.   ]
 [  5.          22.   ]
 [ 16.          19.   ]
 [  1.          27.   ]
 [  9.          21.   ]
 [ 25.          29.   ]
 [ 24.          28.   ]
 [ 20.          26.   ]
 [ 31.          32.   ]
 [ 30.          33.   ]
 [ 34.          35.   ]
 [ 36.          37.   ]]

принцип, что для каждой строки, я получаю значения двух столбцов, если они <20, я возвращаюих, в противном случае я делаю по модулю, пока не достигну значения ниже 20. Например, у меня есть значение 35, которое> 20, поэтому 35% 20 = 15, я перехожу к строке 15, я получаю значение, если я найду его дляпример 11, я возвращаю 11, если я нахожу это 23 например, я повторяю по модулю 23% 20 = 3, я перехожу к строке 3 и так далее ... это мой код

def modulo(entier):
        if entier < 20:
            return(entier)
        else:
            c = (entier % 20)
            if int(W[c,0]) < 20:
                return(int(W[c,0]))
            else:
                a = modulo(int(W[c,0]))
                return(a)
            if int(W[c,1]) < 20:
                return(int(W[c,1]))
            else:
                e = modulo(int(W[c,1]))
                return(e)
    i = 12
    print(modulo(int(W[i,0])), modulo(int(W[i,1])))

здесь япробовал со строкой 12 матрицы, которая имеет оба значения 25 и 29, следуя принципу, функция должна возвращать 11 и 18 для значения 25 и 16 и 19 для значения 29. но в рабочем режиме программа отображает только два значения11 и 16. поэтому у меня сложилось впечатление, что он просто указывает на первый столбец матрицы, он не читает второе условие if. Надеюсь, я хорошо объяснил проблему и нашел решение. Спасибо

...