(define (teken-n x y n)
(if (not (zero? n))
(begin
(teken-symbolen x y)
(teken-n x y (- n 1)))))
(define (teken-symbolen-combinatie x y n)
(if (not (zero? n))
(begin
(let ((acc 0))
(teken-n x y (+ acc 1))
(newline)
(teken-symbolen-combinatie x y (- n 1))))))
(teken-n x y n)
的用途是打印2个符号,'x 'y
以xyx
的形式在没有任何空格的一行上打印n次它工作正常。我想用
(teken-symbolen-combinatie x y n)
完成的是输出(teken-symbolen-combinatie '- '* 3)
-*-
-*--*-
-*--*--*-
我的代码只给出第一个符号组合,在这个例子中-*-用换行符分隔3次这意味着我的第一个函数的最后一个变量没有正确地递增我不明白为什么。
编辑:纠正问题中的错误
最佳答案
不能递增的是acc
函数返回一个新值,它不改变任何参数。
Scheme中通常的方法是有一个内部循环,它有另一个变量(这似乎是+
的目的)增加到acc
不需要外部函数循环。
关于scheme - 这里如何正确地增加变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52746517/