gccでコンパイルされたCプログラミング言語、WSLのターミナルbash
配列内で最小の数を見つけるために再帰関数を記述しましたが、これは問題なく機能します。
/*01*/ int minimo(int array[], int n)
/*02*/ {
/*03*/ static int min = 0;
/*04*/
/*05*/ if (n == N)
/*06*/ {
/*07*/ return array[n-1];
/*08*/ }
/*09*/ else
/*10*/ {
/*11*/ min = minimo(array, n+1);
/*12*/ if(array[n]<min){
/*13*/ min = array[n];
/*14*/ }
/*15*/ }
/*16*/ }
唯一の問題は、呼び出し側に「min」を返さないため、機能しないことです...
int main()
{
//Var
int array[N] = {10, 2, 5, 1, 7};
printf("Min: %d\n", minimo(array, 0));
}
私の懸念は実際には問題ですが、関数がそのまま正常に機能する私のマシンではありません。それは私の友人のラップトップとIDEでの問題です。友人のMacbookでXCodeにコピーしてみましたが、「return min;」という行では機能しません。関数の最後に追加されませんでした。
15-16行目の間で追加する必要があります return min;
/*15*/ }
return min;
/*16*/ }
あなたへの私の質問は次のとおりです。
- 関数が変数を自動的に返すにはどうすればよいですか?
- 私が作成した唯一の変数(static int min)を返すことは可能ですか?
- それとも、変数が持つ静的属性に関連する「問題」ですか?
- 関数の性質(再帰的)と関係がありますか?
これは私の最初の投稿です。フォーラムのルールに違反している場合は、親切にしてください。
main
は、それの戻り値についてではなく、特定の実装における関数の「自動」戻り値についてです。
C
、returnステートメントがない場合、特定の標準がゼロを返すことです。
-Wall
スイッチを使用してファイルをコンパイルし、コンパイラが何を通知するかを確認する必要があります。
main
関数が何を返すかがわかります。