回答編集履歴

15

テキスト修正

2018/08/15 10:33

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -92,4 +92,4 @@
92
92
 
93
93
 
94
94
 
95
- なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主たる目的なので、(つまり、回答中にあるPythonやLispによるコードよりも、**【考え方】**に書いた漸化式のほうが主なので、)あえてスタックオーバーフロー対策のコード追加はしていません。
95
+ なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主たる目的なので、(つまり、回答中にあるPythonやLispによるコードよりも、**【考え方】**に書いた[漸化式](https://ja.wikipedia.org/wiki/%E6%BC%B8%E5%8C%96%E5%BC%8F)のほうが主なので、)あえてスタックオーバーフロー対策のコード追加はしていません。

14

テキスト修正

2018/08/15 10:33

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -22,7 +22,9 @@
22
22
 
23
23
 
24
24
 
25
+ これをプログラムで書くと、[再帰呼び出し](https://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0#%E5%86%8D%E5%B8%B0%E5%91%BC%E5%87%BA%E3%81%97)(recursive call)をする関数を使うことになります。
26
+
25
- これをプログラムで書くと、再帰関数を使うことになります。ご質問には、
27
+ ご質問には、
26
28
 
27
29
 
28
30
 
@@ -30,7 +32,7 @@
30
32
 
31
33
 
32
34
 
33
- とありますが、これは「言語に標準で用意されている、`sum`のような関数を使わず、」という意味で、再帰関数を新たに定義することは問題ないでしょうか? 問題ないのであれば一例として以下のようになります。
35
+ とありますが、これは「言語に標準で用意されている、`sum`のような関数を使わず、」という意味で、関数を新たに定義することは問題ないでしょうか? 問題ないのであれば一例として以下のようになります。
34
36
 
35
37
 
36
38
 

13

テキスト修正

2018/08/14 09:13

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -60,7 +60,7 @@
60
60
 
61
61
 
62
62
 
63
- であることを示すために、`sum_from1to`を別の言語で書して、例えば Lisp なら以下になります。
63
+ であることを示すために、`sum_from1to`を別の言語で書いてみると、例えば Lisp なら以下になります。
64
64
 
65
65
 
66
66
 

12

テキスト修正

2018/08/14 08:14

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- とありますが、これは「言語で用意されている`sum`関数を使わず、」という意味で、再帰関数を新たに定義することは問題ないでしょうか? 問題ないのであれば、一例として以下のようになります。
33
+ とありますが、これは「言語に標準で用意されている`sum`のような関数を使わず、」という意味で、再帰関数を新たに定義することは問題ないでしょうか? 問題ないのであれば、一例として以下のようになります。
34
34
 
35
35
 
36
36
 

11

テキスト修正

2018/08/14 07:38

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -8,11 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- とあったので、使うプログラミング言語が何かによらず適用できる考え方をご質問されているものと思いました。
12
-
13
-
14
-
15
- 1から10まの和計算す方法とし、1から10までを(リストや配列を使ったり、whileループを使ったりして、)列挙して足しあげるのではない別の考え方を挙げますと、以下があります
11
+ とあったので、使うプログラミング言語が何によず適用きる考え方ご質問されていもの思いまた。ですので、1から10までを(リストや配列を使ったり、whileループを使ったりして、)列挙して足しあげるのではない別の考え方を以下に挙げます。
16
12
 
17
13
 
18
14
 

10

テキスト修正

2018/08/14 05:34

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -94,4 +94,4 @@
94
94
 
95
95
 
96
96
 
97
- なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、(つまり、回答中にあるPythonやLispによるコードよりも、**【考え方】**に書いた漸化式のほうが主なので、)あえてスタックオーバーフロー対策のコード追加はしていません。
97
+ なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主たる目的なので、(つまり、回答中にあるPythonやLispによるコードよりも、**【考え方】**に書いた漸化式のほうが主なので、)あえてスタックオーバーフロー対策のコード追加はしていません。

9

テキスト修正

2018/08/14 05:10

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -94,4 +94,4 @@
94
94
 
95
95
 
96
96
 
97
- なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、(つまり、回答中にあるPythonやLispによるコードではなく、**【考え方】**に書いた漸化式のほうが主なので、)あえてスタックオーバーフロー対策のコード追加はしていません。
97
+ なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、(つまり、回答中にあるPythonやLispによるコードよりも、**【考え方】**に書いた漸化式のほうが主なので、)あえてスタックオーバーフロー対策のコード追加はしていません。

8

テキスト修正

2018/08/14 00:49

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -94,4 +94,4 @@
94
94
 
95
95
 
96
96
 
97
- なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、(つまり、回答中にあるPythonやLispによるコードではなく、**【考え方】**書いた漸化式のほうが主なので、)あえてスタックオーバーフロー対策のコード追加はしていません。
97
+ なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、(つまり、回答中にあるPythonやLispによるコードではなく、**【考え方】**書いた漸化式のほうが主なので、)あえてスタックオーバーフロー対策のコード追加はしていません。

7

テキスト修正

2018/08/14 00:32

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -94,4 +94,4 @@
94
94
 
95
95
 
96
96
 
97
- なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、(つまり、回答中にあるPythonやLispによるコードではなく、**【考え方】**と書いたほうが主なので、)あえてスタックオーバーフローの対策のコード追加はしていません。
97
+ なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、(つまり、回答中にあるPythonやLispによるコードではなく、**【考え方】**と書いた漸化式のほうが主なので、)あえてスタックオーバーフローの対策のコード追加はしていません。

6

テキスト修正

2018/08/14 00:30

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -94,4 +94,4 @@
94
94
 
95
95
 
96
96
 
97
- なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、(つまり、回答中にあるPythonやLispによるコードではなく、**【考え方】**と書いたほうが主なので、)あえての対策をしたコード追加はしていません。
97
+ なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、(つまり、回答中にあるPythonやLispによるコードではなく、**【考え方】**と書いたほうが主なので、)あえてスタックオーバーフローの対策コード追加はしていません。

5

テキスト修正

2018/08/14 00:25

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -15,6 +15,8 @@
15
15
  1から10までの和を計算する方法として、1から10までを(リストや配列を使ったり、whileループを使ったりして、)列挙して足しあげるのではない別の考え方を挙げますと、以下があります。
16
16
 
17
17
 
18
+
19
+ **【考え方】**
18
20
 
19
21
  > __n__ を自然数として、1から __n__ までの自然数の和を __S(n)__ とすると、以下が成り立つ。
20
22
 
@@ -92,4 +94,4 @@
92
94
 
93
95
 
94
96
 
95
- なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、あえてその対策をしたコードの追加はしていません。
97
+ なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、(つまり、回答中にるPythonやLispによるコードではなく、**【考方】**と書いたほうが主なので、)あえてその対策をしたコードの追加はしていません。

4

テキスト修正

2018/08/14 00:24

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
  return 1
46
46
 
47
- return n + sum_from_1to(n - 1)
47
+ return n + sum_from1to(n - 1)
48
48
 
49
49
 
50
50
 
@@ -92,4 +92,4 @@
92
92
 
93
93
 
94
94
 
95
- なお、実際に再帰関数を用いたプログラムを書くという際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では考え方を示すことが主なので、あえてその対策をしたコードの追加はしていません。
95
+ なお、実際に再帰関数を用いたプログラムを書く際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では「再帰で求める」という考え方自体を示すことが主なので、あえてその対策をしたコードの追加はしていません。

3

テキスト修正

2018/08/14 00:18

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -12,9 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- 1から10までの和を計算する方法として、1から10までを(リストや配列を使ったり、whileループを使ったりして、)列挙して足しあげるのではない別の考え方を挙げすれば、以下を使うこと考えられます。
15
+ 1から10までの和を計算する方法として、1から10までを(リストや配列を使ったり、whileループを使ったりして、)列挙して足しあげるのではない別の考え方を挙げますと、以下があります。
16
-
17
-
18
16
 
19
17
 
20
18
 
@@ -40,7 +38,7 @@
40
38
 
41
39
  ```Python
42
40
 
43
- def sum_from_1to(n):
41
+ def sum_from1to(n):
44
42
 
45
43
  if n == 1:
46
44
 
@@ -52,7 +50,7 @@
52
50
 
53
51
 
54
52
 
55
- print(sum_from_1to(10)) # => 55
53
+ print(sum_from1to(10)) # => 55
56
54
 
57
55
  ```
58
56
 
@@ -64,24 +62,34 @@
64
62
 
65
63
 
66
64
 
67
- であることを示すために、`sum_from_1to`を別の言語で書くとして、例えば Lisp なら以下になります。
65
+ であることを示すために、`sum_from1to`を別の言語で書くとして、例えば Lisp なら以下になります。
68
66
 
69
67
 
70
68
 
71
69
  ```Lisp
72
70
 
73
- (define (sum_from_1to n)
71
+ (define (sum_from1to n)
74
72
 
75
73
  (if (= n 1)
76
74
 
77
75
  1
78
76
 
79
- (+ n (sum_from_1to (- n 1)))))
77
+ (+ n (sum_from1to (- n 1)))))
80
78
 
81
79
 
82
80
 
83
81
  ```
84
82
 
83
+   
84
+
85
+ 以上、参考になれば幸いです。
85
86
 
86
87
 
88
+
89
+ ---
90
+
87
- 以上、参考になれば幸いです。
91
+ **追記**
92
+
93
+
94
+
95
+ なお、実際に再帰関数を用いたプログラムを書くという際には、再帰の回数に適切な上限を設ける必要があります。たとえば、上記の`sum_from1to`を `sum_from1to(0)`と呼ぶと、永遠に再帰呼び出しをすることになり、どこかでスタックオーバーフローを起こして異常終了します。ですが、この回答では考え方を示すことが主なので、あえてその対策をしたコードの追加はしていません。

2

テキスト修正

2018/08/14 00:15

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
 
37
- とありますが、これは「言語で用意されている`sum`関数を使わず、」という意味で、再帰関数を使うことは問題ないでしょうか? 問題ないのであれば、一例として以下のようになります。
37
+ とありますが、これは「言語で用意されている`sum`関数を使わず、」という意味で、再帰関数を新たに定義することは問題ないでしょうか? 問題ないのであれば、一例として以下のようになります。
38
38
 
39
39
 
40
40
 

1

テキスト修正

2018/08/13 23:29

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- とあったので、使うプログラミング言語が何かによらず使える考え方をご質問されているものと思いました。
11
+ とあったので、使うプログラミング言語が何かによらず適用できる考え方をご質問されているものと思いました。
12
12
 
13
13
 
14
14