我如何将整数与方案中的函数相乘?

How do i multiply an integer with a function in scheme?

大家好,我正在尝试创建一个函数,它需要一个 parameter:n 然后 returns 将 n 个磁盘从河内塔的 peg1 转移到 peg 3 所需的移动次数的值问题。 提示: n 个盘子的总移动次数, H(n) = 2H(n-1)+1,如果 n>1 = 1,如果 n = 1。 我已经在 python 中实现了代码并且它工作正常但是当我在方案中实现它时我想出了一个错误的答案。我对计划很陌生,如果你们帮我看看我搞砸了的地方,我将不胜感激。我想出的代码如下:

(define(hanoi n)
      (if(< n 2)
          1
      (+(* 2 (hanoi(- n 1) 1)))))
(display(hanoi 4))

您将两个参数传递给 hanoi,但它只需要一个参数,括号放错了位置。这就是递归关系公式在 Scheme 中的样子——请注意你应该如何缩进和格式化你的代码!更好的是,让您的编辑器为您正确地完成它:

(define (hanoi n)
  (if (< n 2)
      1
      (+ (* 2 (hanoi (- n 1))) 1)))


(hanoi 4)
=> 15

顺便说一句:这个问题有一个封闭形式的解决方案,您不需要编写递归过程来查找移动次数 - 只需应用公式 2**n - 1:

(define (hanoi n)
  (- (expt 2 n) 1))

(hanoi 4)
=> 15