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

回答編集履歴

2

追記

2018/03/26 15:50

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -28,4 +28,16 @@
28
28
 
29
29
  結果の配列が左右対称であることを考慮すれば、計算は 約 1/2 に減らすことができますが、
30
30
  h が空数か奇数かで処理分岐をすることでコードが長くなってしまう気がしたので、
31
- そのことは取り込んでいません。
31
+ そのことは取り込んでいません。
32
+
33
+ 追記
34
+ 数列が左右対称であることをして、足し算の回数を約按分にしてみました。
35
+ ```ruby
36
+ def base_of_pascals_triangle(n)
37
+ return [1] if n == 1
38
+
39
+ prev = [0] + base_of_pascals_triangle(n - 1)
40
+ left = (0..((n - 1) / 2)).map { |x| prev[x] + prev[x + 1] }
41
+ left + left[0...(n / 2)].reverse
42
+ end
43
+ ```

1

追記

2018/03/26 15:50

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -22,4 +22,10 @@
22
22
  end
23
23
  ```
24
24
  実行例
25
- ![イメージ説明](836e460dec45d5ac13d5bdca6a51bf85.png)
25
+ ![イメージ説明](836e460dec45d5ac13d5bdca6a51bf85.png)
26
+
27
+ 追記:
28
+
29
+ 結果の配列が左右対称であることを考慮すれば、計算は 約 1/2 に減らすことができますが、
30
+ h が空数か奇数かで処理分岐をすることでコードが長くなってしまう気がしたので、
31
+ そのことは取り込んでいません。