Я написал этот код:
d=1
a=[d,d-1,d]
b=[]
def fctn(f):
h=2
if d>1:
b.append(f)
b.append(d-h)
h+=1
if d-h>0:
fctn(f)
elif d-h==0:
b.append(f)
b.append(0)
elif d==1:
b.append(f)
for i in range(len(b)-1):
b.append(b[i])
print(b)
С:
d=2
, как и ожидалось, я получаю:
[[2, 1, 2], 0, [2, 1, 2]]
с:
d=3
, как и ожидалось, я получаю:
[[3, 2, 3], 1, [3, 2, 3], 0, [3, 2, 3], 1, [3, 2, 3]]
Однако, для d> 3 , я получаю следующую ошибку:
RecursionError: maximum recursion depth exceeded in comparison
Итак, Я попытался использовать:
sys.setrecursionlimit()
и попытался запустить следующий код (как из IDLE, так и из командной строки):
import sys
sys.setrecursionlimit(10**4)
d=1
a=[d,d-1,d]
b=[]
def fctn(f):
h=2
if d>1:
b.append(f)
b.append(d-h)
h+=1
if d-h>0:
fctn(f)
elif d-h==0:
b.append(f)
b.append(0)
elif d==1:
b.append(f)
for i in range(len(b)-1):
b.append(b[i])
print(b)
В этот момент не возникает никаких ошибок, но вывод пусто Точнее, при запуске из IDLE я просто получаю:
=============================== RESTART: Shell ===============================
Итак, мне кажется, что предыдущий RecursionError исчез, но, тем не менее, код не выполняется так, как я ожидал, по сути ничего не давая в качестве вывода.
Что с этим не так? Также, увеличив предел рекурсии до 10 ^ 9, я тоже ничего не получаю. Любое предложение о том, как решить проблему?