2017-10-29 5 views
0

もし私がリストを持っていて、再帰を使ってリストの順序を変更したいのであれば。どうやってやるの?それを行うための簡単な方法や最善の方法はありますか?ここでjavascriptで再帰を使ってリストを回す

は、私はそれがどのように動作するか、について考えてきたものです:

list = [0,1,2,3,4,5,6,7,8,9]; 

if if(list.length<1){ 
    return list; 
}else{ 
    //making list last to first. 
} 

should return this: 
[9,8,7,6,5,4,3,2,1,0] 

誰かがそれがどのように動作するか、少し説明することができれば、私は、この再帰とはかなり新しいです。おかげ

+0

なぜ再帰を使用しますか? 'list.reverse()'はもっと簡単です。 – pablochan

+0

配列を逆にする必要がある場合は、[組み込み関数](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse)を使用できます。再帰を使用するように特に要求されている課題の場合は、おそらく自分で試してみるべきでしょう。 – GolezTrol

+0

[ライブラリを使わずにJavaScriptで配列を逆にする方法は?](https://stackoverflow.com/questions/10168034/how-can-i-reverse-an-array-in-javascript-without-using -libraries) – GolezTrol

答えて

0

アイデアは練習再帰がある場合は、このコードを見ることができます、私はコメントで説明します:

list = [0,1,2,3,4,5,6,7,8,9]; 
 

 
function rev(list, reversed=[]){ 
 
    if(list.length === 0){ // if the list is empty, you return the reversed Array 
 
    console.log(reversed) 
 
    return reversed; 
 
    }else{ 
 
    reversed.push(list.pop()) // if not empty, you add the last element as the first element of the reversed list 
 
    return rev(list, reversed) // then you continue the recursion with the list modified 
 
    } 
 
} 
 

 

 

 
console.log(rev(list))

0

あなたが本当にArray#reverseを使用したくない場合は、オーバーArray#sliceArray#concatを使用して再帰でそれを複雑にすることができます

var list = [0,1,2,3,4,5,6,7,8,9]; 
 

 
function reverse(list) { 
 
    return list.slice(-1).concat((list.length ? reverse(list.slice(0, -1)) : [])); 
 
} 
 

 
console.log(reverse(list));

+0

ありがとうございました。あなたが少し説明することができればいいですか?そのコード内を意味します。 – user7697691

+0

これは[三項演算子]です(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator)。 –

関連する問題