【发布时间】:2021-02-22 04:14:50
【问题描述】:
大家好,我正在尝试创建一个函数,它采用一个参数:n,然后返回在河内塔问题中将 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))
【问题讨论】:
-
运行此函数时实际发生了什么?如果有错误消息:它是什么?现在查看代码(提示、缩进或让编辑器为您执行此操作可能会有所帮助)。
-
嗨,它给了我一个错误的答案,即当我写 (display(hanoi 4)) 时它返回 8。但正确答案是 15。
标签: functional-programming scheme lisp towers-of-hanoi