Re: [問題] 請問一個關於while的用法

看板C_Sharp (C#)作者 (Hugh)時間19年前 (2006/02/04 08:59), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串7/8 (看更多)
這是用遞回的方式去解魔術方陣 如果成功的話會秀出方陣, ※ 引述《polaristing (北極星的小鼎)》之銘言: : 我再寫的問題是一個3*3的魔術方陣 : 排列1~9 使不管是橫的.直的或斜的總和均相同 : ex: 4 3 8 : 9 5 1 : 2 7 6 : 下面是原本完整的程式碼 還有一些我其他不太清楚的問題 : static void Main(string[] args) : { : int[,] X=new int [3,3]; : X[1,1]=5; : while(!Assign(X,9)); : } : static bool Assign(int[,] X,int count) : { : int i,j; : if(count==5) : { : if(Check(X)) : { : Show(X); : Console.WriteLine(); : return true; : } : else : return false; : } : 當count = 5之後 下面的程式還會執行嗎 : 還是說 return 完之後就跳出這個method嗎 : 如果執行下面的程式了 又是如何終止整個程式 不會,當 count = 5 只做CHECK 是否符合要求 以及符合就把方陣印出來,這邊的檢查結果會 一直傳到 main 做為是否結束的依據 : Random r=new Random(); : while(true) : { : i=r.Next(0,3); : j=r.Next(0,3); : if(X[i,j]==0) break; : } 上面的 while 是找沒有被寫過的地方 : X[i,j]=count; : X[2-i,2-j]=10-count; 填值到剛剛找到的地方 : bool ra=Assign(X,count-1); 用遞回的方式去填 count-1 : X[i,j]=0; : X[2-i,2-j]=0; : 這邊 什麼時候會執行阿 除了count = 5以外,每次呼叫Assign都 會做,假設某次尋找失敗,如果不清掉這 次的結果,下次尋找時會因為找不到地方 可以寫,而卡死在上面的while裡 : return ra; : } -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.38.206

02/04 14:59, , 1F
懂了 謝謝各位的指教 m(_ _)m
02/04 14:59, 1F
文章代碼(AID): #13u_ngHg (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #13u_ngHg (C_Sharp)