在球拍中编写嵌套的 while 循环

writing nested while loops in racket

我试图在 racket 中使用 while loop package 来编写嵌套循环,如下所示:

(define i 0)
(define j 0)
(while (< i 10)
       (while (< j 10) (printf "~a ~a~n" i j) (set! j (+ j 1)))
       (set! i (+ i 1)) )

但由于某种原因,内部循环只执行了一次。谁能告诉我我做错了什么?

考虑第一个迭代系列结束时 j 的值:它是 10。

然后i加1,再次开始内循环。但是现在 j 是 10 并且立即退出循环!

要更正此问题,只需在执行任何内部循环之前重新初始化 j 的值,例如:

(define i 0)
(define j 0)
(while (< i 10)
       (set! j 0)
       (while (< j 10) (printf "~a ~a~n" i j) (set! j (+ j 1)))
       (set! i (+ i 1)) )