[问题] 递回程式一问

楼主: asd860079 (U戏boy)   2019-04-02 15:31:57
先上完整程式码: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?
以上,先感谢各位大大
楼主: asd860079 (U戏boy)   2019-04-02 15:33:00
对了 要在VS 2015以上跑的话再记得改成scanf_s
作者: firejox (Tangent)   2019-04-02 16:16:00
是put(n=7)跑完 put(n=6)还没
作者: longlongint (华哥尔)   2019-04-02 19:24:00
debugger 可以印 call stack/backtrace 出来看看
作者: TitanEric (泰坦)   2019-04-02 21:29:00
for loop跑完回上一层 backtracking

Links booklink

Contact Us: admin [ a t ] ucptt.com