方案中的循环和迭代.

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作为语言.但是,在阅读关于循环的文档后,我似乎找不到这种循环的参考.所以,使用这个特定的例子(或者我猜一个具有无限数量循环的一般例子),如何解决这个问题呢?

Ósc*_*pez 6

像这样的循环:

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)

请注意,上面不限于一个嵌套循环,您可以根据需要声明尽可能多的嵌套循环和迭代变量.