2012-06-25 4 views
0

Вот my code's jsfiddle. тjavascript рекурсивная функция неправильный ответ

function test(i) 
{ 
    if(i==2) 
     return {title:"finished at 2", data:"empty"} 
    else 
    { 
      a=[] 
      a.push(test(i+1)) 
      a.push(test(i+1)) 
      return {title:"number "+i, data:a} 
    } 
} 

alert(JSON.stringify(test(0))) 

Здесь test(0) должен быть

{ 
    title: "number 0", 
    data: [{ 
     title: "number 1", 
     data: [{ 
      title: "finished at 2", 
      data: "Empty" 
     }, { 
      title: "finished at 2", 
      data: "Empty" 
     }] 
    }, { 
     title: "number 1", 
     data: [{ 
      title: "finished at 2", 
      data: "Empty" 
     }, { 
      title: "finished at 2", 
      data: "Empty" 
     }] 
    }] 

в то время как вы можете видеть, что отличается в результате этого кода. Как и почему? Что я делаю, чтобы все исправить?

+1

Уточнить свой вопрос пожалуйста. –

+0

Это не то, что умеют Скриншоты! – Amberlamps

+0

В будущем вы можете использовать 'console.log()' вместо 'alert()'. Однако не ответ. – PeeHaa

ответ

4

Вы используете глобальную переменную в своей рекурсивной функции, поэтому она будет изменена во время ее использования.

Изменить это:

a = [] 

к:

var a = [] 
Смежные вопросы