Переход к проблеме с алгоритмом, который вызывает переполнение стека:
В какой-то момент вы позвоните dfs(n=1, m=6)
, что в
return 1+min(dfs(2*n,m),dfs(n-1,m));
вызовет dfs(0, 6)
, который немедленно возвращается из-за n == 0 и dfs(2, 6)
. Это вызовет dfs(4, 6)
, который мы пока игнорируем, и dfs(1, 6)
, который возвращает состояние, в котором вы уже были. Это бесконечная рекурсия.
Возможно, вы захотите избежать нажатия синего цвета, если n==2
, кроме случаев, когда m==1
. Возможно, некоторая специальная обработка для n==1
также может помочь.