ユーザは配列のサイズを取得し、関数 "MALLOC"を使ってメモリ割り当てを割り当て、ループなしで再帰で配列を入力します!!ループなしで再帰的に関数を入力するscanf配列
再帰関数を使用して "ループ"を作成する方法がわかりません。
私は喜んで助けてください願っています。
ありがとうございました。
ユーザは配列のサイズを取得し、関数 "MALLOC"を使ってメモリ割り当てを割り当て、ループなしで再帰で配列を入力します!!ループなしで再帰的に関数を入力するscanf配列
再帰関数を使用して "ループ"を作成する方法がわかりません。
私は喜んで助けてください願っています。
ありがとうございました。
再帰の良い使用ではありません - ループは、この場合、より「自然」である - しかし、アイデアは、このような関数のようになります。これは宿題のように思えるので、私があげる
void getInput(int howMany)
{
if (howMany == 0)
return;
// get user input
getInput(howMany-1);
}
私はあなたに同意しますが、私の講師が必要です。しかし、私はmemorey割り当てを作成する必要があります、私は関数のポイントを送る必要はありません? – studeng1
宿題指向の答え - 擬似コードで。
define loop(array, index)
if index == 0
return array
array[index] = get input from user
loop (array, index-1)
loop(array, array_size)
と呼んでください。
これは、再帰をうまく利用していないMatの感想をエコーしたいと思います。
更新
あなたが入力を読み取るためにscanf(3)
を使用したいので、私はそれを使用する方法の強力なヒントを与えるでしょう。上記の、私は書いた:
array[index] = get input from user
をあなたは、次のscanf(3)
呼び出して、この行を記述することができます。
scanf("%d", &array[index]);
これはarray[index]
場所に10進数の整数を格納します - &
リターンのアドレス配列サブスクリプションを評価するのではなく、配列スロット。
あなたが尋ねていることを理解することは本当に難しいですが、明確にしてください。 – cnicutar
私は配列のユーザーサイズからの入力が必要で、この配列に割り当てられたメモリを作成します。そして、この配列にscanfを実行します。私はこの関数を書いていますが、これは機能しません。
'空隙getss(int配列[]、int型のサイズ)
{int型のカウンタ= 0。 \t if(size == 0) \t \t return; \t(カウンタ<サイズ) \t { \t \tのscanf( "%dの"、および配列[i]は、 \t \tカウンタ++; \t \t \t}もし \t getss(アレイ、サイズ-1); } ' – studeng1