RecursionError:maximum recursion depth exceeded in compariso,setrecursionlimit無効再帰過深爆スタックソリューション


def dfs(n):
    if n<=2:
        return 1
    return dfs(n-1)+dfs(n-2)

print(dfs(5000))

pythonを使用して上記のコードを実行すると、
RecursionError: maximum recursion depth exceeded in comparison
ヒントが深すぎます
ネット上に解決策がある
import sys
sys.setrecursionlimit(9000000)
def dfs(n):
    if n<=2:
        return 1
    return dfs(n-1)+dfs(n-2)

print(dfs(5000))

しかし、まだ結果は出ていない.実際には、やはり爆桟であり、再帰深さには依然として上界があり、この案では解決できない.これはホストの性能とオペレーティングシステムと関係があると言われていますが、私のAMD 2700 Xは耐えられません.なぜか分かりません.
import sys
sys.setrecursionlimit(9000000)
def dfs(n):
    print(n)
    if n<=2:
        return 1
    return dfs(n-1)+dfs(n-2)

print(dfs(5000))
'''
...
1079
1078
1077
1076

      4000
'''

実際には、DFSによる迷宮問題を例に、スタックを手動でシミュレートすることができます.
def dfs(sx,sy,maxx,maxy,area,vis,mapp,org):
    stack = []
    stack.append((sx,sy))
    dx=[0,0,1,-1]
    dy=[1,-1,0,0]
    while len(stack)!=0:
        x,y=stack[-1]
        stack.pop()
        vis[x][y]=1
        # is white
        if mapp[x][y]==1:
            # find the ans
            return
        for i in range(4):
            nx=x+dx[i]
            ny=y+dy[i]
            # print("NX=",nx,"NY=",ny)
            if nx>=0 and nx=0 and ny