【问题标题】:If statement returns in CLISP如果语句在 CLISP 中返回
【发布时间】:2013-10-25 23:06:30
【问题描述】:

所以我目前正在尝试在 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。我可以使用某种继续功能来保持这种状态吗?谢谢!

【问题讨论】:

    标签: loops if-statement common-lisp


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 2014-01-15
      相关资源
      最近更新 更多