看板 Flash 關於我們 聯絡資訊
※ 引述《titidoby (朵麗絲。王)》之銘言: : 最近小女子在寫一個建立二元樹的Flash, : 想法是使用者輸入第一個數值即存入陣列arr[i] : 當輸入第二個數值就與第一個數值作比較, : 若較第一個樹值大就存入arr[2*i+1]的位置反之存入arr[2*i]的位置 : 部分程式碼如下: : 目前我是採用呼叫function的方式來呼叫addNode和insertNode : 只要偵測按鈕是否有被執行則動作。 : (寫法是用遞迴的方式,但是如果去除arr[i]=-1;會發生遞迴溢位) : (預設是讓使用者輸入4個值來比較即可) : 我的問題來了: : 1.預設的Array()內容值,我可以設定皆為-1嗎? 可以,可是沒有意義吧... : 2.Array()預設的值是空的還是0 ? trace就知道啦@@ : ps.如果有哪位大大可以幫我修改這部分的程式,我會很感激的...T^T... : :1. var arr:Array=new Array(); :2. var i:int=0; :3. var inputNum:int; :4. insert_btn.addEventListener(MouseEvent.CLICK,onInputClick);{ :5. arr[i]=-1;} ^^^^^^^^^^^ 這是什麼... :6. function addNode(inputNum:int):void :7. { :8. arr[1]=insertNode(1,inputNum); :9. trace("arr="+arr); :10. } :11. function insertNode(i:int,inputNum:int) :12. { :13. if(arr[i]==-1){ :14. return inputNum; :15. }else if(arr[i]< inputNum){ :16. arr[2*i+1]=insertNode(2*i+1,inputNum); :17. }else{ :18. arr[2*i]=insertNode(2*i,inputNum); :19. } :20. } 幫縮... 如果沒記錯,二元樹的13行if(arr[i]==-1) 應該是判斷陣列是不是空的 那用if(!arr[i])就可以了 似乎不用特別塞-1進去 15行是13行的else if,17行是其他的else 感覺很詭異 另外一個部份是 11行帶進去的(i:int); 只有在function 裡面時會是帶進去的值 function結束後,這個i會是一開始的 var i:int = 0; 不確定這件事情會不會影響這支程式 : 抱歉我的問題很長,但是困擾我很久了@@... : 希望有大大可以看得懂我在寫甚麼?先謝謝各位大大先>///< 猜了部份的原始碼後 還是請把完整的檔案附上來吧... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.165.26
titidoby:謝謝板大的回應,後來我設定arr[i]=undefined就可以了@@ 03/03 19:54
titidoby:因為這是以遞迴的方式撰寫,所以希望能先判斷arr[i]的值 03/03 19:57