Özdevingen(Recursive) Yapısı ile Dizi Toplamı ve Ortalaması
Merhaba arkadaşlar bu programda recursive programlama mantığını göreceğiz.
Aşağıdaki başlangıç değerleri ile tanımı verilmiş A[10] dizinli değişkenini kullanarak aşağıdaki işlemleri yapan özyinemeli(Recursive) fonksiyonları hazılıyoruz.
int a[10]={25,48,12,91,74,148,39,1,98,86};
• a[] Dizinli değişkenin en büyükk değerinin bulunması. MaxBul(),
• a[] Dizinli değikenin eleman değerlerinin toplamının bulunması. ToplamBul(),
• a[] Dizinli değişkenin elemanlarının ortalamasını bul. ortBul().
Yol Gösterme:Fonksiyonların prototipini aşağıdaki biçimde hazırlıyoruz.
<geri dönen değer> fonksiyon_adı(int a[ ], int n);
#include <stdio.h>
#include <stdlib.h>
int enbuyuk(int a[], int n) {
if(n==1) {
return a[0];
}
else {
int kalaninenbuyugu=enbuyuk(a, n-1);
return a[n-1] > kalaninenbuyugu ? a[n-1] : kalaninenbuyugu;
}
}
int toplam(int a[], int n) {
if(n==1) {
return a[0];
}
else {
return a[n-1]+toplam(a, n-1);
}
}
float ort(int a[], int n) {
//return (float)toplam(a,n)/n;
if(n==1) {
return a[0];
}
else {
return (ort(a, n-1)*(n-1)+a[n-1])/n;
}
}
int main() {
int a[]={25,48,12,91,74,148,39,1,98,86};
printf(“En buyuk: %d, toplam: %d, ortalama: %f”, enbuyuk(a, 10), toplam(a,10), ort(a, 10));
system(“pause”);
return 0;
}