题
我如何可以实现的循环血小板方案喜欢在java
for(int i=0;i<10;){
for(int j=0;j<3;){
System.out.println(""+j);
j++;
}
System.out.println(""+i);
i++;
}
解决方案
您在Java的例子并不直接映射到Scheme语言由刚开始学习一些新的关键字,在目前还没有用于实现对方案明确的循环结构(除非你写一个自己构建!)。该食谱的方式在计划做,这是定义遍历列表的递归函数。这里有一个如何在流程做一个for循环式的函数的一个例子:
(define (doit x x-max dx)
(if (<= x x-max)
(begin
;;...perform loop body with x...
(doit (+ x dx) x-max dx))))
(doit a b dx) ; execute loop from a to b in steps of dx
从当前页摘自:
下面是另一个链接到介绍你需要了解从命令式语言翻译循环方案的提示页面:
计划是一个非常有趣的语言来学习,你也应该读计算机程序的结构和解读,这是以前用于在麻省理工学院教学计划的教材。
其他提示
在PLT你可以这样做:
(for ([i (in-range 10)])
(for ([j (in-range 3)]) (printf "~s\n" j))
(printf "~s\n" i))
迭代建造方案就是"do
"你可以看看它在 R5RS说明书.
例如你给了会看起来像这样的东西:
(do ((i 0 (+ i 1))) ((> i 9))
(do ((j 0 (+ j 1))) ((> j 2))
(display j)
(newline))
(display i)
(newline))
(do ...)
是多一点总比什么出现在这个例子。例如,可以使它返回价值而不是仅仅利用它为其副作用。它还可能有许多"计数":
(do ((i 0 (+ i 1)
(j 0 (+ j 2))
((stop? i j) <return-value>)
exprs...)
我建议你去看一下米歇尔Simionato的“历险记在schemeland“一个pythonista。它是python->方案,但是,它的真正的写得好,更重要的是,它是从procedural->功能。
不隶属于 StackOverflow