Rekurencja ,zadanie

0

Witam , prosiłbym o pomoc we wskaznaiu błędu:

program rekurencyjny , który wypisze ilość liczb "x" wsytępujących w tablicy

#include<stdio.h>
#include<conio.h>
int rek(int n,int t[]){
	int k=0;
	int x=1;
	if(n==-1) return k;
	else
	if(t[n-1]==x){
		k++ ;
		return rek(n-1,t) ;
		
	}
	else return rek(n-1,t);
}
int main (void){

int w;
const int n=5;
int a[n]={1,2,1,54,1} ;
w==rek(n,a);
printf("%d",w);

getche();
return 0;
	
		
		
	}
		
		
2
#include <stdio.h>

int count(int numbers[], int number_count, int target)
{
    if (number_count == 0) {
        return 0;
    }
    else if (numbers[0] == target) {
        return 1 + count(numbers + 1, number_count - 1, target);
    }
    else {
        return count(numbers + 1, number_count - 1, target);
    }
}

int main(int argc, char *argv[])
{
    int test_numbers[7] = {1, 1, 1, 2, 1, 2, 1};
    printf("%d", count(test_numbers, 7, 1));
    return 0;
}
1
 w==rek(n,a);

tu chyba chciałeś napisać w=rek(n,a);</code> ? :) Poza tym za każdym razem jak wchodzisz do funkcji to cały czas masz k=0, musisz przed <code class="c"> int k=0;</code> napisać słowo static, wtedy k będzie wspólne dla wszystkich wywołań funkcji :) czyli: <code class="c">static int k=0; Albo k uczynić zmienną globalną, ale nie radzę bo jeśli napiszesz większą ilość funkcji to możesz się pogubić, która zmienna globalna jest do czego.

0
size_t count(int tb[],size_t size,int find)
  {
   return size?(count(tb+1,size-1,find)+(*tb==find)):0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1