作者asd860079 (U戏boy)
看板C_and_CPP
标题[问题] 递回程式一问
时间Tue Apr 2 15:31:57 2019
先上完整程式码:
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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1554190319.A.5FB.html
1F:→ asd860079: 对了 要在VS 2015以上跑的话再记得改成scanf_s 04/02 15:33
2F:→ firejox: 是put(n=7)跑完 put(n=6)还没 04/02 16:16
可是 n 是怎麽从 7 跳回 6 的?
line 41 的 if 跑完後面的程式码应该没有能修改 n 的地方了吧
而且也不太懂他怎麽跳进else的
3F:→ longlongint: debugger 可以印 call stack/backtrace 出来看看 04/02 19:24
4F:→ TitanEric: for loop跑完回上一层 backtracking 04/02 21:29
我研究一下 0.0 感谢两位~
※ 编辑: asd860079 (36.236.230.242), 04/02/2019 22:31:58