数独をとくためのパーツとして再起関数を作ったのですが、ちゃんと動作するかどうかの確認方法が分からなかったので、質問しています。 以下のことは成り立っているでしょうか? ** やりたいこと ** →x, j ■□■ ↓ ■□□ y,i ■■■ □ :条件を満たす( check_number == true ) ■ :条件を満たさない について、 一つ目の□では配列の途中で停止していて、次の四角に進む そしてその次でも同じことを行い右下に来てしまったらそのとき 前呼び出したところに戻る。 樹形図のような感じで処理していきたいと考えています。 うまく日本語に出来ていませんが、よろしくお願いします。 ** --------- ** ** 処理内容が足りないスクリプト ** 実行は出来ています ** #include <stdio.h> #define false 0 #define true 1 int map[9][9]; /* a :チェックしたい変数 */ int check_number(int a, int x, int y) { int i,j; x=x*3; y=y*3; for(i=y; i<3+y; i++){ for(j=x; j<3+x; j++){ if(map[j] == a) return false; } } return true; } /* 本題 */ void check_pattern(int change_x, int change_y) { int y,x; int a=1; for(y = 0+change_y; y<3; y++){ for(x = 0+change_x; x<3; x++ ){ if(check_number(a, x, y) == true){ if(x == 2){ //右端の時 if(y==2) break; else check_pattern(0,1); }else{ check_pattern(1,0); } } } change_x=0; } } int main() { check_pattern(0,0); return 0; } ** --------------------------------- **