teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

ちゃんと動くやーつ

2020/12/27 07:46

投稿

A_kirisaki
A_kirisaki

スコア2853

answer CHANGED
@@ -2,4 +2,28 @@
2
2
  ```JavaScript
3
3
  f = (x) => x.length === 2 ? x : f(x.reduce((acc, x, i) => i % 2 === 0 ? [...acc,[x]] : [...acc.slice(0, acc.length - 1), [acc[acc.length - 1][0], x]],[]))
4
4
  ```
5
- 再帰使ってるのですぐスタックオーバーフローになっちゃいますが。
5
+ 再帰使ってるのですぐスタックオーバーフローになっちゃいますが。
6
+
7
+ ### 追記
8
+ すみません脳死で作ってたのでツリーが偏ります。まじめにやると。
9
+ ```JavaScript
10
+ function build(xs){
11
+ if(xs === undefined || !Array.isArray(xs) || xs.length === 0){
12
+ return undefined
13
+ } else if(xs.length === 1){
14
+ return xs
15
+ } else if(xs.length === 2){
16
+ return xs
17
+ } else {
18
+ const i = Math.floor(xs.length / 2)
19
+ const inits = xs.splice(0, i)
20
+ const tails = xs.splice(i -i , xs.length)
21
+ return [build(inits), build(tails)]
22
+ }
23
+ }
24
+
25
+ ys = [...Array(10).keys()]
26
+ console.log(build(ys))
27
+ ```
28
+ こんな感じです。
29
+ [動くコード](https://playcode.io/718556)