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)
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)