-1

所以我目前正在尝试在 CLISP 中编写一个函数。我想要做的是让程序在特定条件下停止并执行某些操作,但在条件不成立时继续循环。所以

(do ((i 0 (1+ i)))
      ((equal rows i))
    ;;loop body
    ;;for each row, look at a column
    (do ((j 0 (1+ j)))
    ((equal cols j))
      ;;loop body
      (if
       (equal (get-value board i j) 0) (do ((lst (poss(get-row board i)) (cdr lst)))
                                        ((null lst)  nil)
                                        (return-from solve-driver(set-value board i j (car lst)))))

所以基本上我有两个嵌套循环。在 if 语句为真的情况下,我递归地尝试运行此函数,但如果该语句不为真,则需要继续运行循环。相反,if 语句计算并返回 nil。我可以使用某种继续功能来保持这种状态吗?谢谢!

4

1 回答 1

0

意识到问题出在循环本身。如果没有返回的第二个子句,则在 CLISP 中跳过 if 语句。所以问题不在于 if 语句本身,而在于外部方法和递归。

于 2013-10-26T23:42:38.213 回答