[問題] 遞迴程式一問

看板C_and_CPP (C/C++)作者 (U戲boy)時間7年前 (2019/04/02 15:31), 7年前編輯推噓0(004)
留言4則, 4人參與, 7年前最新討論串1/1
先上完整程式碼:https://pastebin.com/Y4x6Mut9 這是我在網上找到的一個 八皇后問題 的解法 主要是想問 line 31 的遞迴程式 https://imgur.com/D0N0kEb.jpg
照理說 走到這個if之後,棋盤就放滿了 就算把剩下的迴圈跑完 程式應該也沒機會進到 else 裡面繼續放棋子了 但是我用 Visual Studio 跑 Debug 發現他把for迴圈跑完後 他會從line 55 跳到 line 52,然後 n 的值會從7跳到6 (假設input是8) 照理說不應該是 for 迴圈跑完 put()函式也就跑完 然後回到main繼續跑了嗎? 想請問是什麼樣的邏輯讓他可以這樣跑然後找完全部的解才跑回main? 以上,先感謝各位大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.236.230.242 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1554190319.A.5FB.html

04/02 15:33, 7年前 , 1F
對了 要在VS 2015以上跑的話再記得改成scanf_s
04/02 15:33, 1F

04/02 16:16, 7年前 , 2F
是put(n=7)跑完 put(n=6)還沒
04/02 16:16, 2F
可是 n 是怎麼從 7 跳回 6 的? line 41 的 if 跑完後面的程式碼應該沒有能修改 n 的地方了吧 而且也不太懂他怎麼跳進else的

04/02 19:24, 7年前 , 3F
debugger 可以印 call stack/backtrace 出來看看
04/02 19:24, 3F

04/02 21:29, 7年前 , 4F
for loop跑完回上一層 backtracking
04/02 21:29, 4F
我研究一下 0.0 感謝兩位~ ※ 編輯: asd860079 (36.236.230.242), 04/02/2019 22:31:58
文章代碼(AID): #1Sem_lNx (C_and_CPP)
文章代碼(AID): #1Sem_lNx (C_and_CPP)