2016-01-21 2 views
2

Мои блоки кода дает в error.But я не могу найти его в любом месте в программеЧтобы найти частоту числа в массиве с помощью рекурсии

. это говорит

в строке 3: ожидается, ';', '' или ')' перед '=' маркер

#include<stdio.h> 

int count_key1(int a[],int size,int key,int flag=0) 
{ 

    if(size!=0) 
     { 
      if(a[size-1]==key) 
       count_key1(a,size--,key,flag++); 
     } 
    else 
     return flag; 
} 
int main() 
{ 
    int b[30]={1,4,2,3,2,6,6,9},key1=9,result; 
    result=count_key1(b,8,key1,0); 
    printf("%d is %d times present",key1,result); 
    return 0; 
} 
+1

Вы понимаете, что это может так же были написаны как ' int count = 0; for (i = 0; i Lundin

+6

это не разрешено на языке c 'int flag = 0' – milevyo

+0

Вы должны написать int main (void). Также вы должны написать прототип своей функции. –

ответ

9

В C, вы не можете присвоить значение в по умолчанию в параметр функции.

Удалить =0 в

int count_key1(int a[],int size,int key,int flag=0) 

IIRC, вы запутались с C++ перегрузкой функций, где мы можем иметь значение по умолчанию некоторого параметра, если аргумент не передается при вызове функции.

Однако в C вызов функции должен соответствовать точно соответствует подписи, содержащейся в определении. Таким образом, в принципе, нет необходимости в значении по умолчанию для присутствия в определении функции.

0

Сэр, ваш код действительно заметно, но попробуйте использовать следующий простой код, который дает тот же результат, и легко понять

#include<stdio.h> 
#include<stdlib.h> 

int count_key1(int* a,int size,int key,int flag) 
{ 
     int count=0,i; 
     for(i=0; i<size; i++) { if (a[i] == key) count++; } 
     return count; 
} 
int main() 
{ 
     int b[30]={1,4,2,3,2,6,6,9},key1=9,result; 
     result=count_key1(b,8,key1,0); 
     printf("%d is %d times present",key1,result); 
     return 0; 
} 
+0

Спасибо, но мне дано условие, что я должен использовать рекурсию. –

0
int count(int num, int* arr, int length) { 
    if (!length) 
     return 0; 
    int c = count(num, arr+1, length-1); 
    return arr[0] == num? c + 1: c; 
} 

int main(void) { 
int arr[10] = {3,4,1,2,4,5,6,5,4,5}; 

std::cout << count(2, arr, 10); 

return 0; 
} 
Смежные вопросы