C再帰関数エラー不正確な出力
私はスティーブ・アウアラインによる「実践Cプログラミング、第3版」 を勉強していますし、それが次の要件を持つプログラムを作るために、この割り当てが含まれています。
練習9-3:
number
はarray
に現れる回数の 数をカウント機能count(number, array, length)
を書きます。配列にはlength
要素があります。 関数は再帰的でなければなりません。この機能を使用するためのテストプログラムを作成します。
私はプログラムを15分でコーディングしましたが、私の出力はまさに私が望むものではありません。ここでは、コードがあります:プログラムは(論理的なものを除く)エラーなしでokです
#include <stdio.h>
int length;
int count(int num2count, int array[length], int size);
int main(void)
{
char check;
int i = 0;
long int num_to_be_counted;
int ans;
printf("Please enter the length of array:");
scanf("%d",&length);
long int numbers[length];
for(int i = 0; i != length; ++i) {
numbers[i] = 0;
}
printf("Enter the array:");
while(check != '\n') {
scanf("%li",&numbers[i]);
++i;
check = getchar();
}
printf("Enter the number to be counted in the array:");
scanf("%d",&num_to_be_counted);
for(int i = 0; i != length; ++i) {
numbers[i] = 0;
}
ans = count(num_to_be_counted,numbers,length);
printf("The number appears %d times in the array.",ans);
return 0;
}
int count(int num2count, int array[length], int size)
{
static int times = 0;
static int i = 0;
if (array[i] == num2count) {
++times;
}
if(i == size) {
return times;
}
while(i != length) {
++i;
count(num2count,array,length);
}
}
、ここではサンプル入力と出力
length = 4
numbers = 1 2 2 4
number_to_count = 2
Output: 4
は機能もカウントされる数をカウントしていないのです。例えばこの場合は4の配列のサイズを返すだけです。
何か助けをいただければ幸いです。
ヒント:グローバル変数または 'static'変数を使用しないでください。 – melpomene
@メルポメン精緻化してください? – Muneeb
なぜあなたはそれらをユーザーから受け入れた後、配列のすべての値を '0'に再割り当てしますか? – GoodDeeds