Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Functional programming scheme中的循环和迭代。_Functional Programming_Scheme_Racket - Fatal编程技术网

Functional programming scheme中的循环和迭代。

Functional programming scheme中的循环和迭代。,functional-programming,scheme,racket,Functional Programming,Scheme,Racket,我在复习离散数学课上的一些问题,读了一篇引起我注意的练习(注意:这不是家庭作业,我只是好奇而已) 问题:对于以下程序段,“print”语句执行了多少次?(i,j,k,m是整数): 我试着用python来做,但是很无聊,因为我在几秒钟内就完成了。所以为了好玩,我试着用DrRacket用scheme作为语言。然而,在阅读了关于循环的文档之后,我似乎找不到这类循环的参考。那么,使用这个特定的例子(或者我猜是一个循环数不确定的普通例子),如何解决这个问题呢?这样的循环: for i := 1 to 20

我在复习离散数学课上的一些问题,读了一篇引起我注意的练习(注意:这不是家庭作业,我只是好奇而已)

问题:对于以下程序段,“print”语句执行了多少次?(i,j,k,m是整数):

我试着用python来做,但是很无聊,因为我在几秒钟内就完成了。所以为了好玩,我试着用DrRacket用scheme作为语言。然而,在阅读了关于循环的文档之后,我似乎找不到这类循环的参考。那么,使用这个特定的例子(或者我猜是一个循环数不确定的普通例子),如何解决这个问题呢?

这样的循环:

for i := 1 to 20 do
    for j := 1 to i do
        print [i, j]
与球拍中的相同,假设循环范围如下:
1到20
包括从1到(包括)20的所有数字

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

这样的循环:

for i := 1 to 20 do
    for j := 1 to i do
        print [i, j]
与球拍中的相同,假设循环范围如下:
1到20
包括从1到(包括)20的所有数字

请注意,以上内容不限于一个嵌套循环,您可以根据需要声明任意多个嵌套循环和迭代变量。

MIT Scheme:

(do ((cnt 0) (i 1 (+ i 1))) ((> i 20) cnt)
   (do ((j 1 (+ 1 j))) ((> j i)) 
     (do ((k 1 (+ 1 k))) ((> k j))
       (do ((m 1 (+ 1 m))) ((> m k)) 
         (set! cnt (+ 1 cnt))))))
;Value: 8855

但这实际上是一个数学问题,而不是编程问题。

麻省理工学院方案:

(do ((cnt 0) (i 1 (+ i 1))) ((> i 20) cnt)
   (do ((j 1 (+ 1 j))) ((> j i)) 
     (do ((k 1 (+ 1 k))) ((> k j))
       (do ((m 1 (+ 1 m))) ((> m k)) 
         (set! cnt (+ 1 cnt))))))
;Value: 8855

但这实际上是一个数学问题,不是一个编程问题