作者Angelliya (澪澪...誰還有心?)
看板Flash
標題Re: [問題] 請問可以預設陣列裡的值皆為某一個值嗎?
時間Wed Mar 3 01:23:17 2010
※ 引述《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