Board logo

标题: [求助]批处理写递归型hanoi [打印本页]

作者: muya05     时间: 2007-9-3 10:55    标题: [求助]批处理写递归型hanoi

想用批处理写个hanoi,没有成功。
一些残代码:
setlocal ENABLEDELAYEDEXPANSION
set /p n="请输入汉诺塔层数:"
call :hanoi !n! a b c
:hanoi
pause
if !1! EQU 1 (
        echo !2!到!4!
) else (
        set /a "!1!-=1"
        call :hanoi !1! !2! !4! !3!
        echo !2!到!4!
        set /a "!1!-=1"
        call :hanoi !1! !3! !2! !4!
)
pause
能否改改,使之运行?
作者: wudixin96     时间: 2007-9-3 11:04
!1!这些变量从哪来的?
作者: muya05     时间: 2007-9-3 14:44


  Quote:
Originally posted by wudixin96 at 2007-9-3 11:04 AM:
!1!这些变量从哪来的?

1:接收n传参;
2:接收a;
3:接收b;
4:接收c。
作者: wudixin96     时间: 2007-9-3 16:29
那也是%1、%2、%3、%4啊

怎么会变成

%1%、…………
作者: muya05     时间: 2007-9-4 08:20


  Quote:
Originally posted by wudixin96 at 2007-9-3 04:29 PM:
那也是%1、%2、%3、%4啊

怎么会变成

%1%、…………

不懂,
哪位能做个可以正常运行的出来么(顺便附上点注释)?
作者: my3439955     时间: 2007-9-4 09:47
这个代码可以得到hanoi序列:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set /p n="请输入汉诺塔层数:"
call :hanoi %n% A B C
goto :EOF

:hanoi
if %1 LEQ 1 (
        echo %2 -^> %4
) else (
        set /a n=%1-1
        call :hanoi !n! %2 %4 %3
        echo %2 -^> %4
        set /a n=%1-1
        call :hanoi !n! %3 %2 %4
)
goto :EOF