我今天在scheme中编写了以下代码,但是评估是错误的.请不要告诉我我很喜欢编程,我知道这是一个经典的递归问题,但是我遇到了麻烦:
I wrote the following code in scheme today, but the evaluation is wrong. Please don't tell me I suck at programming, I understand that this is a classic recursion problem, but I am having trouble with it:
(define (towers-of-hanoi n source temp dest) (if (= n 1) (begin (display "Move the disk from ") (display source) (display " to " ) (display dest) (newline)) (begin (towers-of-hanoi (- n 1) source temp dest) (display "Move the disk from ") (display source) (display " to ") (display dest) (newline) (towers-of-hanoi(- n 1) temp source dest))))我希望代码能正常工作,并且在调试它时,我会让自己更加困惑.谁能帮我吗?
I expected the code to work, and when I debug it I just confuse myself even more. Can anyone help me?
推荐答案在您的代码中,最后一个递归调用似乎是错误的,并且该过程的参数顺序存在问题.尝试以下方法:
In your code, the last recursive call appears to be wrong, and there is a problem with the order of the procedure's parameters. Try this instead:
(define (towers-of-hanoi n source dest temp) (if (= n 1) (begin (display "Move the disk from ") (display source) (display " to " ) (display dest) (newline)) (begin (towers-of-hanoi (- n 1) source temp dest) (display "Move the disk from ") (display source) (display " to ") (display dest) (newline) (towers-of-hanoi (- n 1) temp dest source))))我注意到您一直在问标记为racket的问题,这是针对Racket的同一代码的更惯用和简短的版本:
I noticed that you've been asking questions tagged as racket, here's a more idiomatic and shorter version of the same code, for Racket:
(define (towers-of-hanoi n source dest temp) (cond [(= n 1) (printf "Move the disk from ~a to ~a~n" source dest)] [else (towers-of-hanoi (sub1 n) source temp dest) (printf "Move the disk from ~a to ~a~n" source dest) (towers-of-hanoi (sub1 n) temp dest source)]))无论哪种方式,它都能按预期工作:
Either way, it works as expected:
(towers-of-hanoi 3 "source" "dest" "temp") Move the disk from source to dest Move the disk from source to temp Move the disk from dest to temp Move the disk from source to dest Move the disk from temp to source Move the disk from temp to dest Move the disk from source to dest更多推荐
计划中的河内塔(递归)
发布评论