C Programlama Ebob and Ekok Recursive


Recursive fonksiyon, kendini çağıran bir fonksiyondur. Bu fonksiyon, kendi kendini tekrar ederek işlem yapar. Recursive fonksiyonlar, genellikle belirli bir koşul sağlanana kadar kendini çağırırlar ve sonunda bir temel durumda sonlanırlar. Bu tür fonksiyonlar, özyinelemeli işlemleri gerçekleştirmek için kullanılırlar. Recursive fonksiyonlar genellikle basit ve anlaşılır bir şekilde yazılabilirler ve bazı durumlarda kodun okunabilirliğini ve anlaşılırlığını arttırabilirler. Ancak, yanlış bir şekilde yazılmış recursive fonksiyonlar, hafıza sınırlarını aşarak hafıza bölgesini tüketebilir veya sonsuz döngülere neden olabilirler.
İki veya daha fazla tamsayının ortak bölenlerinin en büyüğüne OBEB, ortak katlarının en küçüğüne OKEK denir.

OBEB, OKEK bulunurken:

Verilen sayılar asal çarpanlarına ayrılır.
Her sayıda ortak olarak bulunan asal çarpanların üsleri en küçük olanlarının çarpımı OBEB dir.
Ortak asal çarpanların üsleri en büyük olan ve ortak olmayan asal çarpanların çarpımı OKEK dur.
EBOB

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int main()
{
 int ebob=1,sayi1,sayi2,c=2,enb;
 system("COLOR 5D");
 printf("1. sayi degeri giriniz-->\n");
 scanf("%d",&sayi1);
 printf("2. sayi degeri giriniz-->\n");
 scanf("%d",&sayi2);
 if(sayi2<sayi1)
 enb=sayi1;
 else
 enb=sayi2;
 while(c<=enb)
 {
  while((sayi1%c==0) && (sayi2%c==0))
  {
  sayi1=sayi1/c;
  sayi2=sayi2/c;
  ebob=ebob*c;
  }
  c++;
 }
 printf("ebob-->%d\n",ebob);
 system("pause");
 return 0;
}


EKOK

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int  ekok(int sayi,int sayi2);
int main()
{
 system("COLOR 1B");
 int sayi1,sayi2;
 printf("Birinci sayiyi ikinci sayidan buyuk giriniz-->\n");
 don:
 printf("1.sayiyi giriniz-->\n");
 scanf("%d",&sayi1);
 printf("2. sayi degerini giriniz-->\n");
 scanf("%d",&sayi2);
 if(sayi1>sayi2)
 {
  ekok(sayi1,sayi2);
 }
 else
 {
 //system("CLS"); 
 goto don;
  
 }
 system("pause");
 return 0; 
}

int ekok(int sayi,int sayi2)
{
 int dizi[10];
 int index=1,i=1;
 if(i>sayi)
 {
  return 1;
 }
 else
 {    
  if(sayi%i==0 ||  sayi2%i==0)
  {
   
   dizi[i]=i;
   return printf("%d", i*ekok(sayi/i,sayi2/i));
  }
 }
}

C Programlama Ebob and Ekok Recursive

Yorum Gönder

0 Yorumlar