SUB move01(a,b) PRINT " (";a;",";b;")" IF a>1 THEN CALL move01(a-1,b+1) IF a>1 THEN CALL move01(a-1,b-1) END SUB SUB move02(a,b) IF a=1 THEN PRINT " (";a;",";b;")" ELSEIF a=2 THEN PRINT " (";a;",";b;")" ELSEIF a=3 THEN PRINT " (";a;",";b;")" ELSE PRINT " (";a;",";b;")" END IF IF a>1 THEN CALL move02(a-1,b+1) IF a>1 THEN CALL move02(a-1,b-1) END SUB SUB move03(a,b) IF a>1 THEN CALL move03(a-1,b+1) PRINT " (";a;",";b;")" IF a>1 THEN CALL move03(a-1,b-1) END SUB SUB move04(a,b) IF a>1 THEN CALL move04(a-1,b+1) IF a>1 THEN CALL move04(a-1,b-1) PRINT " (";a;",";b;")" END SUB PRINT PRINT "分岐型再帰関数による探索順 :" PRINT PRINT PRINT "##### 1.<左順路優先探索順> ###############################################" PRINT CALL move01(4,0) PRINT PRINT " 上記の探索法は、 一般に 「 深さ優先探索法 」 とか 「 バックトラック法 」" PRINT "とか言われています。" PRINT PRINT "##############################################################################" PRINT PRINT PRINT "##### 2.<深さ左優先探索順 > ##############################################" PRINT PRINT " 探索順 : 左から第1列目の上からの順" PRINT " → 左から第2列目の上からの順" PRINT " → 左から第3列目の上からの順 → ・・・" PRINT CALL move02(4,0) PRINT PRINT "##############################################################################" PRINT PRINT PRINT "##### 3.<左側優先探索順> #################################################" PRINT CALL move03(4,0) PRINT PRINT "##############################################################################" PRINT PRINT PRINT "##### 4.<左組織優先探索順> ###############################################" PRINT CALL move04(4,0) PRINT PRINT "##############################################################################" PRINT PRINT "* 分岐型再帰関数は、<深さ左優先探索順> をすることができません。" PRINT END