回答編集履歴

2

追記

2019/04/25 04:07

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -41,6 +41,16 @@
41
41
 
42
42
 
43
43
  再帰を利用する上ではよくあるミスです。何か警告が出ているのでは無いでしょうか。
44
+
45
+
46
+
47
+ ---
48
+
49
+ あと、細かいようですが、誰も指摘していないので。
50
+
51
+ - **誤**: ASCⅡコード
52
+
53
+ - **正**: ASCIIコード ([Wikipedia](https://ja.wikipedia.org/wiki/ASCII))
44
54
 
45
55
 
46
56
 

1

追記

2019/04/25 04:07

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -41,3 +41,141 @@
41
41
 
42
42
 
43
43
  再帰を利用する上ではよくあるミスです。何か警告が出ているのでは無いでしょうか。
44
+
45
+
46
+
47
+ 参考
48
+
49
+ ---
50
+
51
+ 階乗の計算を題材に実験してみます。
52
+
53
+
54
+
55
+ ######期待通りに動いている例
56
+
57
+ ```C
58
+
59
+ #include <stdio.h>
60
+
61
+
62
+
63
+ int fractional(int n) {
64
+
65
+ if(n == 0) {
66
+
67
+ return 1;
68
+
69
+ }
70
+
71
+
72
+
73
+ return n * fractional(n-1);
74
+
75
+ }
76
+
77
+
78
+
79
+ int main(void) {
80
+
81
+ int num = 10;
82
+
83
+ printf("%d! = %d\n", num, fractional(num));
84
+
85
+
86
+
87
+ return 0;
88
+
89
+ }
90
+
91
+ ```
92
+
93
+
94
+
95
+ **標準出力** [Wandbox](https://wandbox.org/permlink/KQdCUE2gimZQovTh)
96
+
97
+ ```
98
+
99
+ 10! = 3628800
100
+
101
+ ```
102
+
103
+
104
+
105
+ ######期待通りに動かない例
106
+
107
+ ```C
108
+
109
+ #include <stdio.h>
110
+
111
+
112
+
113
+ int fractional(int n) {
114
+
115
+ if(n == 0) {
116
+
117
+ return 1;
118
+
119
+ }
120
+
121
+
122
+
123
+ //return n * fractional(n-1);
124
+
125
+ n * fractional(n-1);
126
+
127
+ }
128
+
129
+
130
+
131
+ int main(void) {
132
+
133
+ int num = 10;
134
+
135
+ printf("%d! = %d\n", num, fractional(num));
136
+
137
+
138
+
139
+ return 0;
140
+
141
+ }
142
+
143
+ ```
144
+
145
+
146
+
147
+ **標準出力/標準エラー出力** [Wandbox](https://wandbox.org/permlink/Oap8hjZsULlnhYqd)
148
+
149
+ ```
150
+
151
+ prog.c: In function 'fractional':
152
+
153
+ prog.c:9:7: warning: value computed is not used [-Wunused-value]
154
+
155
+ n * fractional(n-1);
156
+
157
+ ~~^~~~~~~~~~~~~~~~~
158
+
159
+ prog.c:10:1: warning: control reaches end of non-void function [-Wreturn-type]
160
+
161
+ }
162
+
163
+ ^
164
+
165
+ 10! = 1
166
+
167
+ ```
168
+
169
+
170
+
171
+ - **-Wunused-value**
172
+
173
+ 値が使われていないけど、良いの?という警告です。
174
+
175
+ - **-Wreturn-type**
176
+
177
+ 返り値が無いけど、良いの?という警告です。
178
+
179
+
180
+
181
+ 本当は返されていない返り値を無理矢理使っていることになり、未定義の動作を踏んでいます。