回答編集履歴

2

追記

2018/03/26 15:50

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -59,3 +59,27 @@
59
59
  h が空数か奇数かで処理分岐をすることでコードが長くなってしまう気がしたので、
60
60
 
61
61
  そのことは取り込んでいません。
62
+
63
+
64
+
65
+ 追記
66
+
67
+ 数列が左右対称であることをして、足し算の回数を約按分にしてみました。
68
+
69
+ ```ruby
70
+
71
+ def base_of_pascals_triangle(n)
72
+
73
+ return [1] if n == 1
74
+
75
+
76
+
77
+ prev = [0] + base_of_pascals_triangle(n - 1)
78
+
79
+ left = (0..((n - 1) / 2)).map { |x| prev[x] + prev[x + 1] }
80
+
81
+ left + left[0...(n / 2)].reverse
82
+
83
+ end
84
+
85
+ ```

1

追記

2018/03/26 15:50

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -47,3 +47,15 @@
47
47
  実行例
48
48
 
49
49
  ![イメージ説明](836e460dec45d5ac13d5bdca6a51bf85.png)
50
+
51
+
52
+
53
+ 追記:
54
+
55
+
56
+
57
+ 結果の配列が左右対称であることを考慮すれば、計算は 約 1/2 に減らすことができますが、
58
+
59
+ h が空数か奇数かで処理分岐をすることでコードが長くなってしまう気がしたので、
60
+
61
+ そのことは取り込んでいません。