Nic*_*lic 1 scheme functional-programming racket
我正在为我的离散数学课解决一些问题,并阅读引起我注意的练习(注意:这不是作业.我只是纯粹好奇).
问题:为以下程序段执行"print"语句多少次?(i,j,k,m是整数):
for i := 1 to 20 do
for j := 1 to i do
for k := 1 to j do
for m := 1 to k do
print (i * j) + (k * m)
Run Code Online (Sandbox Code Playgroud)
我试图在python中做到这一点,但它很无聊因为我在几秒钟内完成了它.所以为了好玩,我尝试用DrRacket使用scheme作为语言.但是,在阅读关于循环的文档后,我似乎找不到这种循环的参考.所以,使用这个特定的例子(或者我猜一个具有无限数量循环的一般例子),如何解决这个问题呢?
像这样的循环:
for i := 1 to 20 do
for j := 1 to i do
print [i, j]
Run Code Online (Sandbox Code Playgroud)
在Racket中等效于此,假设环路范围看起来像这样:1 to 20包括从1到(和包括)20的所有数字.
#lang racket
(for* ((i (in-range 1 21))
(j (in-range 1 (add1 i))))
(displayln (list i j)))
Run Code Online (Sandbox Code Playgroud)
请注意,上面不限于一个嵌套循环,您可以根据需要声明尽可能多的嵌套循环和迭代变量.