作者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
1F:推 titidoby:谢谢板大的回应,後来我设定arr[i]=undefined就可以了@@ 03/03 19:54
2F:→ titidoby:因为这是以递回的方式撰写,所以希望能先判断arr[i]的值 03/03 19:57