Python 上的最大递归问题,递归函数的问题

Maximum recursion problem on Python, problem with a recursive function

import sys
import random
import numpy as np
import matplotlib.pyplot as plt
sys.setrecursionlimit(10**7)

nL,nC=100,100
a,b=50,50
c = 5
n=0
L=np.zeros((nL,nC))
T = []
def case_prox(L1:list,i,j):   
    l=len(L1)
    return [[L1[(i+1)%l][j],(i+1)%l,j],[L1[(i-1)%l][j],(i-1)%l,j],[L1[i][(j+1)%l],i,(j+1)%l],[L1[i][(j-1)%l],i,(j-1)%l]]

def avancer(L,i,j):
    global n,S,T,p
    S = []
    p = 0
    while n<150:#global dans le while
        a = random.randrange(0,len(case_prox(L,i,j)))
        
        if L[case_prox(L,i,j)[a][1]][case_prox(L,i,j)[a][2]] == 0:
            L[case_prox(L,i,j)[a][1]][case_prox(L,i,j)[a][2]] = 1
            n+=1
            avancer(L,50,50)
            S.append(p+1)
        else:
            avancer(L,case_prox(L,i,j)[a][1],case_prox(L,i,j)[a][2])
            n+=1
            p+=1
    print(L)
                
                

L[50][50]=1

print(case_prox(L,30,30))

print(case_prox(L,30,30)[0][1],case_prox(L,30,30)[0][2])

avancer(L,50,50)
plt.plot(S)

我做了一个基于内部扩散限制聚合的算法。 主要函数是递归的,所以我必须多次调用该函数。 我决定增加递归限制,但问题没有解决。 该功能长期有效并发挥作用。 你能帮帮我吗?

我想你想在调用 else 中的 avancer 之前迭代 n,否则你会冒无限循环的风险...

def avancer(L,i,j):
    global n,S,T,p
    S = []
    p = 0
    while n<150:#global dans le while
        a = random.randrange(0,len(case_prox(L,i,j)))
        
        if L[case_prox(L,i,j)[a][1]][case_prox(L,i,j)[a][2]] == 0:
            L[case_prox(L,i,j)[a][1]][case_prox(L,i,j)[a][2]] = 1
            n+=1
            avancer(L,50,50)
            S.append(p+1)
        else:
            n+=1
            avancer(L,case_prox(L,i,j)[a][1],case_prox(L,i,j)[a][2])
            p+=1
    print(L)