アッカーマン関数の解をPythonで求めようとしています。実装は以下のようにしました。
Python
1import sys 2sys.setrecursionlimit(10**6) 3 4ack=[[-1]*10000 for _ in range(10000)] 5ack[0][0]=1 6 7def solve(m,n): 8 if ack[m][n]!=-1: 9 return ack[m][n] 10 if m==0: 11 ack[0][n]=n+1 12 return ack[0][n] 13 elif n==0: 14 ack[m][0]=solve(m-1,1) 15 return ack[m][0] 16 else: 17 ack[m][n]=solve(m-1,solve(m,n-1)) 18 return ack[m][n] 19 20_m,_n=map(int,input().split()) 21print(solve(_m,_n))
このコードでは(m,n)=(3,10)あたりまでは求まったのですがその後は何も出力することなくプログラムを終了させてしまいます。できれば(m,n)=(4,1)を出力させたいと思っています。
実際に試したところsolve(4,1)=solve(2,4268~4270)あたりで強制に終わらせていて、再帰制限に引っ掛かっているようではないです。
こういうのは初めてなので何がどうなっているのか全く分かりません、何かわかる方いましたら宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/13 14:47
2019/10/13 14:56
2019/10/13 15:27
2019/10/13 15:37